log4.propertiespeiz

来源:互联网 发布:java生产者消费者的ppt 编辑:程序博客网 时间:2024/06/06 12:48

一、log4j.properties 的使用详解

主要分为3部分: 1,Logger:记录器,决定什么日志信息应该被输出、什么日志信息应该被忽略。负责供客户端代码调用,执行debug(Object msg)、 info(Object msg)、warn(Object msg)、error(Object msg)等方法。  2,Appender:存放器,指定日志信息应该输出到什么地方,可以是控制台、文件、网络设备。  3,Layout:布局格式,指定日志信息的输出格式。

1.输出级别的种类

ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息


2.配置日志信息输出目的地

log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制台)
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


3.配置日志信息的格式

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


4.控制台选项

Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是:System.out,指定输出控制台
FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n


5.日志信息格式中几个符号所代表的含义:

 -X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
 %r: 输出自应用启动到输出该log信息耗费的毫秒数
 %c: 输出日志信息所属的类目,通常就是所在类的全名
 %t: 输出产生该日志事件的线程名
 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
 %%: 输出一个"%"字符
 %F: 输出日志消息产生时所在的文件名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信息
 %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行

 

可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。

如:

 1)   %20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
 2)   %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
 3)   %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。

 4)   %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。


如:
##此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名log4j.rootLogger=info,stdout,logfile##这里指stdout目标为控制台输出方式log4j.appender.stdout=org.apache.log4j.ConsoleAppender##控制台输出标准信息(System.err 错误信息)log4j.appender.stdout.Target=System.out##定义输出格式log4j.appender.stdout.layout=org.apache.log4j.PatternLayout##如果输出格式为PatternLayout时,必须指定具体的格式信息,每种参数代表不同的信息log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{HH:mm:ss SSS} - %m %l %n##输出的日志文件要根据最大限度来输出,达到最大限度时,会自动新建一个继续输出log4j.appender.logfile=org.apache.log4j.RollingFileAppender##默认的输出日志文件名为cclog.log,默认路径在程序根目录下log4j.appender.logfile.file=cclog.log##最大限度log4j.appender.logfile.MaxFileSize=2000KB##最多保存几个文件备份log4j.appender.logfile.MaxBackupIndex=20##这个指定输出格式log4j.appender.logfile.layout=org.apache.log4j.PatternLayout##指定输出格式中具体包含的信息log4j.appender.logfile.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m (%c{1}:%L) %nlog4j.appender.R = org.apache.log4j.DailyRollingFileAppender#指定消息输出到logs/log.log文件log4j.appender.R.file = logs/log.loglog4j.appender.R.DatePattern = -yyy-MM-dd'.log'#默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。log4j.appender.R.Append = true#指定输出格式log4j.appender.R.layout = org.apache.log4j.PatternLayout#log4j.appender.R.layout.ConversionPattern = %d %p [%l] %m%nlog4j.appender.E = org.apache.log4j.DailyRollingFileAppender#指定日志消息的输出最低层次,即error以上的输出log4j.appender.E.Threshold = ERROR##指定消息输出到logs/errorlog.log文件log4j.appender.E.file = logs/errlog.loglog4j.appender.E.DatePattern = -yyy-MM-dd'.log'#默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。log4j.appender.E.Append = true#指定输出格式log4j.appender.E.layout = org.apache.log4j.PatternLayout#log4j.appender.E.layout.ConversionPattern = %d %p [%l] %m%n


下面是个例子:


程序中代码:

/**首先在你要调用log输出日志的类中要进行声明log,这里和配置文件中的log4j.logger.ws.HCM037是对应的,这是log4j的层级关系实现的这里参数也可以指定某个类名等。*/
  1. package testSuite;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.apache.log4j.Logger;  
  6. import org.apache.log4j.PropertyConfigurator;  
  7. import org.openqa.selenium.By;  
  8. import org.openqa.selenium.WebDriver;  
  9. import org.openqa.selenium.chrome.ChromeDriver;  
  10.   
  11. public class TestBaidu {  
  12.   
  13.     public static void main(String[] args) {  
  14.           
  15.          Logger logger=Logger.getLogger("baidu");  
  16.            
  17.          PropertyConfigurator.configure(".\\Log4j.properties");  
  18.            
  19.          // 打开浏览器  
  20.          System.setProperty("webdriver.chrome.driver"".\\Tools\\chromedriver.exe");    
  21.          WebDriver driver = new ChromeDriver();   
  22.          logger.info("启动浏览器");  
  23.            
  24.          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
  25.          logger.info("隐式等待10秒");  
  26.            
  27.          driver.get("https://www.baidu.com");  
  28.          logger.info("打开百度首页");  
  29.            
  30.          driver.findElement(By.id("kw")).sendKeys("Selenium");  
  31.          logger.info("在搜索输入框输入selenium");  
  32.            
  33.            
  34.     }  
  35.   
  36. }  
[plain] view plain copy
  1. log4j.rootLogger=INFO,CONSOLE,R,HTML,TTCC  
  2.    
  3. // 定义一个appender  
  4. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  
  5. log4j.appender.R=org.apache.log4j.RollingFileAppender  
  6. log4j.appender.TTCC=org.apache.log4j.RollingFileAppender  
  7. log4j.appender.HTML=org.apache.log4j.FileAppender  
  8.    
  9. // 定义log文件保存路径,三种日志文件格式  
  10. log4j.appender.R.File=./Log/testlog.log  
  11. log4j.appender.TTCC.File=./Log/testlog1.log  
  12. log4j.appender.HTML.File=./Log/application.html  
  13.   
  14. // 定义layout和pattern  
  15. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  
  16. log4j.appender.CONSOLE.layout.ConversionPattern= %5p [%t] (%F:%L)- %m%n  
  17. log4j.appender.R.layout=org.apache.log4j.PatternLayout  
  18. log4j.appender.R.layout.ConversionPattern=%d - %c -%p - %m%n  
  19. log4j.appender.TTCC.layout=org.apache.log4j.TTCCLayout  
  20. log4j.appender.TTCC.layout.DateFormat=ISO8601  
  21. log4j.appender.HTML.layout=org.apache.log4j.HTMLLayout  
  22. log4j.appender.HTML.layout.Title=Application log  
  23. log4j.appender.HTML.layout.LocationInfo=true  

运行完后,右键刷新Log文件夹,可以看到三个日志文件。

分别打开三种文件,截图如下






原创粉丝点击