`

apache-log4j与java.util.logging.Logger

    博客分类:
  • j2ee
阅读更多

java.util.logging.Logger

我们先来说下JDK1.4以后出现的java.util.logging日志记录。
说到日记记录我们当然会想到往那里存?以什么格式打印结果?
这2个问题对象的java类是Handler,和Formatter,然而日记记录还有一个功能就是等级划分。JDK中的日记记录分为7个等级,分别是
SEVERE (highest value)
WARNING
INFO
CONFIG
FINE
FINER
FINEST (lowest value)
为什么要定义等级呢,这是因为一个项目在不同的阶段需要测试不同的部分和对信息进行分级测试。Logger里有相对应的方法打印出不同等级的信息.如logger.info(“”);logger.fine();等
同时他里面还有addHandler(Handler handler) 添加Handler(常用的有ConsoleHandler)
但是通过在JAVA类里配置大大降低了灵活性。所以一般都用一个properties文件配置
handlers=java.util.logging.ConsoleHandler
.level=FINE
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
maomao.level=FINEST
这个是一个最简单的例子.
其实我们在程序里直接用(下面代码)logger为什么能打印出信息呢,只是因为这时候他会去加载jre/lib/logging.properties.所以程序能运行。但是如果要用我们自己的properties文件配置就需要传如一个jvm参数。如-Djava.util.logging.config.file=myfile

Logger logger = Logger.getLogger("maomao.test");
              logger.finest("The messsage is finest");
              logger.finer("The message is finer");
              logger.fine("The message is fine");
              logger.config("The message is config");
              logger.info("The message is info");
              logger.warning("The message is warning");
              logger.severe("The message severn");



apache-log4j
与jdk-logger不同的是log4j只定义了5个级别分别是debug,warn,info,error,fatal.
他下面常常用的类有
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#  org.apache.log4j.ConsoleAppender(控制台),
#  org.apache.log4j.FileAppender(文件),
#  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
#  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

log4j.appender.CONSOLE.layout.ConversionPattern=-[%p]-[%l]- %m%n
#   %m:产生的日志具体信息
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#  %r 输出自应用启动到输出该log信息耗费的毫秒数
#  %c 输出所属的类目,通常就是所在类的全名
#  %t 输出产生该日志事件的线程名
#  %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”
#  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

以上这些类其他书上和网上都很容易找到资料,现在我们只举例2个类的配置
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG,A1

# A1 is set to be a ConsoleAppender
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r[%t]%-5p%c%x -%m%n

#org.apache.log4j.RollingFileAppender
#log4j.logger.com.apache.log4j.model=ERROR,A2
#log4j.appender.A2=org.apache.log4j.RollingFileAppender
#log4j.appender.A2.File=c\:\\maomao.txt
#log4j.appender.A2.MaxFileSize=1KB
#log4j.appender.A2.MaxBackupIndex=5
#log4j.appender.A2.layout=org.apache.log4j.PatternLayout
#log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

#org.apache.log4j.DailyRollingFileAppender
log4j.logger.com.apache.log4j.model=ERROR,A2
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=C\:\\file1.txt
log4j.appender.A2.DatePattern='.'yyyy-MM-dd-HH-mm

log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r[%t]%-5p%c%x-%m%n

#org.apache.log4j.jdbc.JDBCAppender
#log4j.logger.com.apache.log4j.model=ERROR,A2
#log4j.appender.A2=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.A2.Driver=oracle.jdbc.driver.OracleDriver
#log4j.appender.A2.URL=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#log4j.appender.A2.User=system
#log4j.appender.A2.Password=maomao
#log4j.appender.A2.layout=org.apache.log4j.PatternLayout
#log4j.appender.A2.sql=insert into table3(id,log) values('%t','%m')
很简单吧,自己看吧,西西。
这里提醒下如果想设置logger. setAdditivity(false)
log4j.additivity.com.apache.log4j.model=false;
还有个commons-logging他是上面2者的结合,有兴趣者自己查
分享到:
评论

相关推荐

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    这些接口包括最基本的`org.apache.logging.log4j.Logger`,它是所有日志记录的起点,以及`org.apache.logging.log4j.LogManager`,它负责管理日志配置和日志器实例。API库的主要目标是与实现层解耦,允许开发者在不...

    slf4j-all-log4j12-1.4.3.jar

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个API,允许开发者选择自己偏好的日志框架,如Log4j、Java Util Logging、Logback等。SLF4J的主要目的是为了简化日志处理,使得在不同...

    slf4j-log4j12-1.5.8.jar.zip

    SLF4J的主要目的是为各种日志框架(如log4j、java.util.logging、Logback等)提供一个简单、一致的接口,使得开发人员能够在不修改代码的情况下切换日志框架。"slf4j-log4j12-1.5.8.jar.zip"这个压缩包包含了SLF4J与...

    slf4j-log4j12-1.7.2.jar 亲测可用

    SLF4J (Simple Logging Facade for Java) 是一个用于日志记录的接口层,它为各种日志框架,如Logback、Log4j、Java Util Logging等提供了一个统一的API。SLF4J的主要目的是使得应用程序可以在部署时选择任何支持的...

    commons-logging-1.2-bin.zip下载

    Commons Logging 提供了一组接口和辅助类,使得应用程序可以透明地使用任何兼容的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者简单的控制台输出。这个库的主要优点是灵活性和可插拔性,开发者...

    slf4j-log4j12-1.7.1.jar

    SLF4J的主要目标是为各种日志框架,如logback、log4j、Java Util Logging等,提供一个简单的统一的API。通过SLF4J,开发者可以在开发阶段使用SLF4J接口编写日志代码,然后在部署时选择合适的日志实现。这极大地提高...

    log4j.jar和commons-logging.jar

    由于commons-logging的存在,你无需直接使用log4j的类,而是通过`java.util.logging.Logger`的接口来实现日志记录,commons-logging会自动找到log4j作为底层实现。 总之,log4j.jar和commons-logging.jar是Java开发...

    apache-commons-logging.jar.zip

    Apache Commons Logging 提供了一个API,开发人员可以使用这个API编写日志语句,然后在运行时通过配置来决定实际的日志实现,如Log4j、java.util.logging(也称为JUL)或简单的控制台日志。 标题中的"apache-...

    slf4j-log4j12-1.6.1.jar+slf4j-api-1.6.1.jar

    2. **替换日志语句**:将所有直接引用特定日志系统的代码(例如`java.util.logging.Logger`或`log4j.Logger`)替换为SLF4J的API,如`org.slf4j.Logger`和`LoggerFactory.getLogger()`。 3. **配置Log4j**:创建一个...

    omcat-juli.jar,tomcat-juli-adapters.jar,log4j-1.2.17.jar

    总的来说,这个组合——Tomcat的JULI适配器与Log4j——提供了一个灵活且强大的日志解决方案,让开发者能够更好地控制和利用服务器的日志信息。记住,合理地管理和分析日志数据,是提升应用性能和稳定性的重要一环。

    ant-commons-logging-1.6.5.jar.zip

    此库提供了一个接口,允许Ant和其他基于Java的项目独立于具体的日志实现(如log4j、java.util.logging或Apache Log4j)进行日志记录。这样做的好处在于,开发者可以根据项目需求选择不同的日志框架,而无需修改代码...

    slf4j-log4j相关jar

    SLF4J API不包含任何具体日志实现,而是通过绑定机制与具体日志框架(如Log4j、Java Util Logging等)进行连接。 SLF4J-api-1.7.25.jar是SLF4J的核心API库,其中包含了用于记录日志的接口和类。开发者在编写代码时...

    log4j与web.xml的配置

    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> ``` 5. **输出到日志文件** - 在log4j配置文件中,我们已经定义了日志输出到文件,如`/var/log/app.log`。`...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    它作为一个抽象层,允许开发者选择底层的日志实现,如Log4j、java.util.logging等。在使用Log4j时,这个库作为桥梁,使得应用能够透明地调用Log4j的API。 **二、Log4j配置文件** 在压缩包中,还包含了一份名为`log...

    Tomcat使用Log4j输出catalina.out日志

    另外,java.util.logging生成的日志格式与项目中使用Log4j记录的日志格式不一致,这会导致在后期日志分析时出现格式不统一的问题。 为了改善这些问题,Tomcat提供了一种机制,允许我们通过配置和替换特定的jar包来...

    shiro-log4j

    Shiro 提供的日志支持是通过其内置的日志接口实现的,该接口允许开发者选择不同的日志实现,如 Log4j、Java Util Logging 或 SLF4J。集成 Log4j 可以利用其丰富的配置选项和强大的日志处理能力,例如,你可以控制...

    tomcat日志log4j配置的jar

    在这个文件中,我们将配置JULI(Java Util Logging)来使用Log4j。 ```properties # logging.properties handlers = org.apache.juli.FileHandler, org.apache.log4j.ConsoleHandler org.apache.juli.FileHandler....

    log4j与commons-logging-1.0.4.jar

    通过Commons Logging,开发者可以在不修改代码的情况下切换底层的日志实现,如从Log4j切换到java.util.logging或者其它日志库。这种抽象层的设计使得应用程序具有更好的移植性和可维护性。 在实际应用中,将Log4j和...

    Apache Commons Logging整合Log4j简单例子

    这篇博客"Apache Commons Logging整合Log4j简单例子"显然会引导我们如何将ACL与Log4j集成,以便在我们的Java应用中使用Log4j作为日志记录器。Log4j是一款功能强大的日志框架,提供灵活的日志配置和多种输出选项,如...

    commons-logging.jar log4j.jar

    这意味着开发者可以使用commons-logging接口,然后在部署时根据需要选择不同的日志实现,如log4j、java.util.logging或简单的控制台输出。它的主要优点包括: 1. **模块化**:通过抽象日志实现,应用程序代码与特定...

Global site tag (gtag.js) - Google Analytics