Log4j的配置

来源:互联网 发布:最简单的小游戏的编程 编辑:程序博客网 时间:2024/06/05 00:29

在启用日志记录之前,你必须先配置log4j。配置Log4j意味着增加appender(destinations/targets/handlers)类别(logger)和分配每个appender布局(格式化程序)。

类别可以在任何顺序创建和配置。特别是,一个类别将找到并链接到它的后代即使是实例化。

您还可以配置类别以编程方式登录到特定appender使用类别对象的addAppender()方法。添加多达你想要(或者如果你不没有)。这种方法通常不推荐,因为它涉及到更改源代码并重新编译它。更好的方法是使用外部配置文件如Java属性文件或XML文件。

注意,输出源不是单独,他们是附加的!一个类别继承其祖先的所有输出源(默认)。如果你添加一个appender类别和它写入相同的底层流(控制台,相同的文件等)作为其他appender,两次相同的日志消息将出现在日志(或更多)。此外,如果两个类别层次结构配置使用相同的appender名字,Log4j appender会写两次。使用cat.setAdditivity(false)类别禁用继承的输出源。然后,日志消息只会被发送到输出源专门配置的那一类。

调用静态方法BasicConfigurator.configure()方法配置log4j日志控制台就像一个system.out.println(…)声明。这个方法是硬连接添加到根类别ConsoleAppender打印在控制台上。输出将被格式化的模式使用一套PatternLayout % 4 r(t %)% 5 p c % x - % m % n %。通常是不需要使用log4j的属性文件,这样会更简单,更灵活。

默认配置log4j是log4j.properties的文件。把它在应用程序类路径中。使用一个静态的PropertyConfigurator.configure(…)方法来从Java属性文件读取配置信息。现有的配置既不清理也不重置。为此,调用静态BasicConfigurator.resetConfiguration()方法之前调用该方法。这有可能使长期代码管理更加复杂。使用者应坚持一个log4j.properties在每个应用程序的根目录 。

一个log4j配置文件示例

# Set root category priority to DEBUG and set its only appender to A1log4j.rootCategory=DEBUG, A1# A1 is set to be a ConsoleAppender (writes to system console).log4j.appender.A1=org.apache.log4j.ConsoleAppender# A1 uses PatternLayout.log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

这个样例文件配置log4j以完全相同的方式作为BasicConfigurator.configure()方法。但这种方式,你可以稍后改变,例如,debug到fatal的属性文件,不需要重新编译任何Java代码!

另一个更复杂的log4j配置文件

#### Use two appenders, one to log to console, another to log to a filelog4j.rootCategory=debug, stdout, R# Print only messages of priority WARN or higher for your categorylog4j.category.your.category.name=WARN# Specifically inherit the priority level#log4j.category.your.category.name=INHERITED#### First appender writes to consolelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n#### Second appender writes to a filelog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.log# Control the maximum log file sizelog4j.appender.R.MaxFileSize=100KB# Archive log files (one backup file here)log4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

在这里,输出也将被加到example.log日志文件。这个文件将在滚时达到100 kb。当发生翻转时,旧example.log日志将自动转移到example.log.1。也可用DailyRollingFileAppender滚日志文件用每一分钟,小时,天,周,月或每天的方式。

长期运行的项目,如服务器、使用configureAndWatch(字符串configFilename,长delay_in_milliseconds)配置使用Java属性文件。Log4j将每一毫秒继续监控属性文件的任何更改,如果文件更改,Log4j将更新配置 。

当代码转移到生产环境,为了达到快速的性能,您可以禁用日志级别等于或低于某一层次结构中的所有类别。例如,不记录任何日志,指定log.disable=FATAL在配置属性文件中。

唯一的例外是如果log.disableOverride属性没有设置为false。因此,系统管理员(暂时)可以指定log.disableOverride = true在配置文件覆盖log.disable属性和排除一些禁用属性和记录所有消息.

0 0
原创粉丝点击