仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 560|回复: 13
打印 上一主题 下一主题

[学习教程] JAVA教程之Java Web App: 挑选与设置日记库仓酷云

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.Java天下里,日记库就和很多其他库[1]一样,你有多个选择,多个还不错的选择,好比log4j,java.util.logging,logback,别的另有一些一致的logapi,好比slf4j,common-logging等。而C++感到开源的好用的有口碑的日记库并非那末丰厚[2]。
选择
Java的日记库分为两种,一种是供应一致的api,如slf4j,common-logging;一种是供应真实的完成,如log4j,java.util.logging和logback。前者能够自在搭配前面真实的完成库。
会呈现这类情形的缘故原由是java日记库万马齐喑,这会有这么一个成绩:假定我的程序利用到两个库,第一个利用了log4j,而第二个利用了java.util.logging,两个log库同时事情,一定不是功德:


  • 日记输入格局大概纷歧致,增添浏览,剖析难度;
  • 加载两份一样功效的库对classpath的整齐和内存利用会发生影响;
  • 乃至另有大概二者没法兼容,运转时呈现成绩。
  • 限定了我的程序对日记库的选择-我依附的库已用了A日记库了,我最好也是用A吧,固然我很喜好B
以是呈现了供应一致api的日记库(不外这玩意多了,仍是会回到本来的成绩),供公用的库写日记都要这些一致的api,用户程序也是用这些一致的api,然后用户能够部署本人喜好的实践功效日记库,供应真正写日记的功效。
我选择利用slf4j+logback的组合,固然我写的不是一个公用库,但这类利用体例使我未来能够十分简单的交换日记库完成。
由于我的使用临时还没有甚么特别的请求,以是选择绝对来说不是很仔细,也许是:


  • 选择slf4j而不是common-logging,由于slf4j更新更酷,且办理了选择性情式化输入[3]与classloader[4]的成绩。
  • 选择logback,由于log4j将被logback替换;由于logback和slf4j是统一个作者写的(即log4j的作者),信任他们会集作的更好
设置
起首是在ivy中到场对slf4j和logback的依附:
  1. <dependencyorg="org.slf4j"name="slf4j-api"rev="1.6.6"conf="runtime->default"/><dependencyorg="ch.qos.logback"name="logback-classic"rev="1.0.6"conf="runtime->default"/><dependencyorg="ch.qos.logback"name="logback-core"rev="1.0.6"conf="runtime->default"/>
复制代码
由于logback内置了与slf4j的binder,你无需像利用log4j大概java.util.Logging时那样供应分外的binderjar包。
然后,对logback做一些设置,供应一个logback的设置文件:

<br>
  1. <?xmlversion="1.0"encoding="UTF-8"?><configurationdebug="true"><contextName>interviewerportal</contextName><appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><target>System.out</target><!--denyalleventswithalevelbelowINFO,thatisTRACEandDEBUG--><filterclass="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><encoder><pattern>%d{ISO8601}[%thread]%-5level%logger{20}-%msg%n</pattern></encoder></appender><appendername="FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>output/logs/interviewerportal.log</file><rollingPolicyclass="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>output/logs/interviewerportal.%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>9</maxIndex></rollingPolicy><triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy><!--allowalllogmessagestobewrittentologfile--><filterclass="ch.qos.logback.classic.filter.ThresholdFilter"><level>TRACE</level></filter><encoder><pattern>%d{ISO8601}[%thread]%-5level%logger{20}-%msg%n</pattern></encoder></appender><!--globallogger:tobothconsole&file--><rootlevel="trace"><appender-refref="STDOUT"/><appender-refref="FILE"/></root></configuration>
复制代码

<br>
这里设置了两个输入:一个尺度输入,一个文件输入,尺度输入只显现INFO及以下级其余log;而文件输入显现一切级其余log。关于文件输入,同时还界说了文件交换战略:铛铛前日记文件年夜于某个数值时,入手下手写到一个新的日记文件中往。
把这个文件放到classpath的根目次下,见(https://github.com/lzprgmr/interviewerportal/blob/master/interviewerportal/src/logback.xml),logback在启动时会主动读取该文件并使用设置。
利用十分复杂:

<br>
  1. packageinterviewerportal.domain;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassSLF4JTest{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SLF4JTest.class);publicstaticvoidmain(String[]args){logger.error("Hello,error");logger.warn("Hello,warn");logger.info("Hello,info");logger.debug("Hello,debug");logger.trace("Hello,trace");logger.info("{}+{}",1,2);}}
复制代码

<br>
[1]好比webMVC框架有Stuts,SpringMVC,JSF(JavaServerFaces,J2EE供应),具体见此;前端显现的有freemarker,jsp(jstl)等;webserver有tomcat,jetty等;applicationserver有GlassFish,JBoss,WebSphere,WebLogic,TomEE等,具体见此。
[2]C++的日记库实在也很多,有google的glog,apache的log4cxx(log4j的兄弟版本),pantheios,和boost.log(该库已被承受进进boost,但今朝还未包括进boost的公布中,大概会在2012岁暮?)
[3]slf4j撑持一种高效的格局化输入字符串:loger.info("{}+{}",1,2)。假如以后的loglevel没有被翻开,则该条信息不会被log,并且该字符串格局化也不会实行,从而进步了效力;而之前,为了不此种情形,你常常必要写出丑恶的if:if(logger.isInfoEnabled())loger.info("{}+{}",1,2)
[4]common-logging是经由过程classloader加载真实的日记库完成的,假如代码中有多份classloader,便可能呈现成绩,具体见此。

但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。
山那边是海 该用户已被删除
沙发
发表于 2015-1-21 07:48:34 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-25 20:00:01 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
兰色精灵 该用户已被删除
地板
发表于 2015-1-25 22:45:03 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
谁可相欹 该用户已被删除
5#
发表于 2015-1-30 07:18:47 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
精灵巫婆 该用户已被删除
6#
发表于 2015-2-4 13:21:08 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
海妖 该用户已被删除
7#
发表于 2015-2-4 14:53:10 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
爱飞 该用户已被删除
8#
发表于 2015-2-5 17:06:03 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
莫相离 该用户已被删除
9#
发表于 2015-2-12 23:20:40 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
柔情似水 该用户已被删除
10#
发表于 2015-2-22 19:38:46 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
11#
发表于 2015-3-7 01:27:05 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
老尸 该用户已被删除
12#
发表于 2015-3-11 17:51:11 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
13#
发表于 2015-3-19 04:40:03 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
蒙在股里 该用户已被删除
14#
发表于 2015-3-27 06:09:58 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表