`

log4j日志动态配置(log4j.properties)

阅读更多
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码(百度百科)。

Log4j的组成:Log4j由三个重要的组成构成:日志记录器(Loggers),输出端(Appenders)和日志格式化器(Layout)。
1.日志记录器(Loggers):控制要输出哪些日志记录语句,对日志信息进行级别限制。
2.输出端(Appenders):指定了日志将打印到控制台还是文件中。
3.日志格式化器(Layout):控制日志信息的显示格式。

 
配置文件(log4j.properties)解析

1、配置根Logger
其语法为:log4j.rootLogger = [ level ] , [appenderName], [appenderName], …
level 是日志记录的类别,appenderName就是指定日志信息输出到哪个地方,您可以同时指定多个输出目的地。 
Log4j建议只使用四个级别, 优先级ERROR>WARN>INFO>DEBUG 。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
举例说明:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
如果为log4j.rootLogger=WARN,则意味着只有WARN,ERROR被输出,DEBUG,INFO将被屏蔽掉。
举例:log4j.rootCategory=INFO,stdout,Runlog,Errorlog
根日志类别为INFO,DEBUG将被屏蔽,其他的将被输出。 stdout,Runlog,Errorlog分别为3个输出目的
 
2、配置Appender(日志信息输出目的地)
   其语法为:log4j.appender.[appenderName] = [appenderType]
   其中,Log4j提供的appender有以下几种:
   org.apache.log4j.ConsoleAppender:输出到控制台
   org.apache.log4j.FileAppender:输出到日志文件,使用一个日志文件,没有大小限制 
   org.apache.log4j.DailyRollingFileAppender:输出到日志文件,每天产生一个日志文件
   org.apache.log4j.RollingFileAppender:输出到日志文件,如果文件大小到达指定尺寸的时候,则产生一个新的文件
   org.apache.log4j.WriterAppender:将日志信息以字符串流的格式发送到指定的任意地方
   org.apache.log4j.WriterAppender:将日志信息以字符串流的格式发送到指定的任意地方 
   org.apache.log4j.jdbc.JDBCAppender:将日志文件输出到数据库中
   org.apache.log4j.net.SMTPAppende:将日志文件输出到邮件 

3、配置日志信息的格式(布局)
   其语法为:log4j.appender.[appenderName].layout = [layoutType]
  Log4j提供的layout有以下几种:
  org.apache.log4j.HTMLLayout:以HTML表格形式布局
  org.apache.log4j.PatternLayout:可以灵活地指定布局模式(常用配置)
  org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串
  org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息

4、log4j采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
 -X号:X信息输出时左对齐;
  %m:输出代码中指定的消息
  %p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  %r:输出自应用启动到输出该log信息耗费的毫秒数
  %c:输出所属的类目,通常就是所在类的全名
  %t:输出产生该日志事件的线程名
  %n:输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2015年07月16日 22:10:28,921
  %l:输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
 
5、log4j配置示例
举例:
输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender(指定输出到控制台)
log4j.appender.Threshold=DEBUG(指定输出类别)
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout(指定输出布局)
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定输出格式)

输出到文件
 log4j.appender.FILE=org.apache.log4j.FileAppender(指定输出到文件)
log4j.appender.FILE.File=file.log(指定输出的路径及文件名)
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout(指定输出的布局)
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定输出的格式)

输出到文件(轮换"日志文件",当日志文件达到指定大小时,该文件就被关闭并备份,然后创建一个新的日志文件)
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender(指定输出到文件)
log4j.appender.ROLLING_FILE.Threshold=ERROR(指定输出类别)
log4j.appender.ROLLING_FILE.File=rolling.log(指定输出的路径及文件名)
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB(指定输出到文件的大小)
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout(指定采用输出布局)
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(指定采用输出格式)

输出到Socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender(指定输出到Socket)
log4j.appender.SOCKET.RemoteHost=localhost(远程主机)
log4j.appender.SOCKET.Port=5001(远程主机端口)
log4j.appender.SOCKET.LocationInfo=true
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE} [DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n(输出格式)

输出到邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender(指定输出到邮件)
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@hollycrm.com(发件人)
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com(SMTP服务器)
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@hollycrm.com(收件人)
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)

输出到数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender(指定输出到数据库)
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test(指定数据库URL)
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver(指定数据库driver)
log4j.appender.DATABASE.user=root(指定数据库用户)
log4j.appender.DATABASE.password=root(指定数据库用户密码)
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')(组织SQL语句)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout(布局)
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n(格式)


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics