log4j的配置以及代码实现

1.学习的地方:
https://blog.csdn.net/u013870094/article/details/79518028
https://www.cnblogs.com/aipan/p/10154391.html
需要先导入包log4j-1.2.17.jar

2.Log4j支持两种配置文件格式

  1.是XML格式的文件
  2.是Java特性文件(键=值),下面介绍的是这种

3.配置根Logger

  ---------------------------------1.rootLogger---------------------------------
  log4j.rootLogger = [ level ] , appenderName, appenderName, …
  level 是日志记录的优先级,分为OFF、FATAL(0严重错误)、ERROR(3错误)、WARN(4警告)、INFO(6普通)、DEBUG(7调试)、ALL或者您定义的级别
  Log4j 建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG
	--->比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 
  appenderName就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。
  例子:
        1.log4j.rootLogger = debug,stdout,D,E
              debug	日志级别
              stdout  是打印到控制台
              D,E		日志输出位置
              注:这里控制台算数出一个地方,D盘和E盘也算一个地方,可继续添加输出地
        2.log4j.rootLogger = debug,console,logfile,stdout,D
              console		配置在Console中输出
              logfile		配置在logfile中输出
              输出到控制台和本地硬盘文件

  ---------------------------------2.Appender---------------------------------
  1.配置日志信息输出目的地Appender
  log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
  log4j.appender.appenderName.option1  =  value1 
  … 
  log4j.appender.appenderName.optionN  =  valueN 

  Appender 为日志输出目的地,Log4j提供的appender有以下几种:
  org.apache.log4j.ConsoleAppender(控制台),
  org.apache.log4j.FileAppender(文件),
  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
  org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  比如:
  log4j.appender.Console=org.apache.log4j.ConsoleAppender
  log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender
  log4j.appender.logfile.File = d://log4j2.log
  log4j.appender.logfile.Encoding = UTF-8

  2.配置日志信息的格式(布局)
  log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
  log4j.appender.appenderName.layout.option1  =  value1 
  … 
  log4j.appender.appenderName.layout.optionN  =  valueN 

  Layout:日志输出格式,Log4j提供的layout有以下几种:
  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

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


  ---------------------------------3.hibernate---------------------------------
  #当解析查询语句时记录HQL和SQL  
  log4j.logger.org.hibernate.hql.ast.AST=DEBUG  
  #记录与事务有关的活动  
  #log4j.logger.org.hibernate.transaction=DEBUG
  #记录执行的HQL语句  
  #log4j.logger.org.hibernate.hql=DEBUG
  #与数据库连接的
  log4j.logger.org.hibernate.ps.PreparedStatementCache = error
  #记录所有的信息  
  #log4j.logger.org.hibernate=INFO  
  #记录执行的SQL语句  
  #log4j.logger.org.hibernate.SQL=DEBUG  
  #记录JDBC参数  
  #log4j.logger.org.hibernate.type=DEBUG  
  #记录执行的SQL DDL语句  
  #log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG   
  #记录在清理Session缓存时,Session缓存中所有对象的状态(最多记录20个对象)  
  #log4j.logger.org.hibernate.pretty=DEBUG  
  #记录第二级缓存的活动  
  #log4j.logger.org.hibernate.cache=DEBUG    
  #记录得到的JDBC资源  
  #log4j.logger.org.hibernate.jdbc=DEBUG  
  #记录JASS(Java Authentication and Authorization Service)授权请求  
  #是一种提供安全验证和授权服务的框架  
  #log4j.logger.org.hibernate.secure=DEBUG 	

4.代码(src同级创建并设置log4j.properties)

  ### 设置###
  log4j.rootLogger = debug,stdout,D,E

  ### 输出信息到控制抬 ###
  log4j.appender.stdout = org.apache.log4j.ConsoleAppender
  log4j.appender.stdout.Target = System.out
  log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
  log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

  ### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
  log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  log4j.appender.D.File = E://logs/log.log
  log4j.appender.D.Append = true
  log4j.appender.D.Threshold = DEBUG 
  log4j.appender.D.layout = org.apache.log4j.PatternLayout
  log4j.appender.D.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}-%p %l] %m%n

  ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
  log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
  log4j.appender.E.File =E://logs/error.log 
  log4j.appender.E.Append = true
  log4j.appender.E.Threshold = ERROR 
  log4j.appender.E.Encoding = UTF-8
  log4j.appender.E.layout = org.apache.log4j.PatternLayout
  log4j.appender.E.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}-%p %l] %m%n	
  
  log4j.logger.org.hibernate.hql.ast.AST=DEBUG  
  ...

5.测试

  import org.apache.log4j.Logger;
  public class Test {
        private static Logger logger = Logger.getLogger(Test.class);  

        public static void main(String[] args) {  
              // 记录debug级别的信息  
              logger.debug("This is debug message.");  
              // 记录info级别的信息  
              logger.info("This is info message.");  
              // 记录error级别的信息  
              logger.error("This is error message.");  
        }  
  }	
posted @ 2020-10-30 18:22  何家有子初长成  阅读(320)  评论(0编辑  收藏  举报