log4j

log4j的作用

什么是日志:
  日志是系统运行过程中的后台输出信息,方便程序员进行系统运行的管控以及Bug的查找。
什么是log4j
  log4j是个日志输出的插件.专门用来进行日志的管理的。由 apache推出的开源免费日志处理的类库。
传统方式获取日志:
  使用 system.out.println()语句进行后台打印
  问题:
    1、日志信息无法保存
    2、无法显示完整日志信息
    3、日志的显示设有级别,所有的日志混杂在一起显示(无法进行日志信息筛选)
    4、日志显示格式不友好.
  解决:使用log4j
使用log4j进行日志管理:
  特点:
    1、日志可以单独保存在文件中
    2、可以获取完整的日志信息
    3、可以进行日志显示的筛选
    4、格式友好

log4j的级别

  FATAL:致命的错误
  ERROR:异常错误
  WARN:警告
  INFO:信息(方法级别)
  DEBUG:调试(代码级别)

log4j的配置文件解释

注意:配置文件一定要存放在src下,并命名为log4j.properties
  //设置全局默认配置(在 log4j.properties 的第一行中控制输出级别INFO,大于等于INFO的级别都可以输出;输出目的地CONSOLE(控制台), LOGFILE(文件))
    log4j. rootCategory=INFO, CONSOLE, LOGFILE
  //设置某个包或者某个类或者某个方法的日志级别和输出位置
    log4j.lagger.包名= FATAL, CONSOL, LOGFILE
    log4j.lagger.包名.类名= FATAL, CONSOL, LOGFILE
    log4j.lagger.包名.类名.方法名= DEBUG, CONSOLE, LOGFILE
  //设置控制台输出配置
    log4j.appender.console = org.apache.log4j.ConsoleAppender  //负责输出的类
    log4j.appender.console.Threshold = error
    log4j.appender.console.layout = org.apache.log4j.PatternLayout  //输出的格式:表达式进行输出
    log4j.appender.console.layout.ConversionPattern =  %m%n    //ConversionPattern:表达式内容
  //设置文件输出配置
    log4j.appender.LOGFILE = org.apache.log4j.FileAppender   //负责往文件输出的类
    log4j.appender.LOGFILE.File = logs/log.log   //log4j.appender.LOGFILE.File 文件位置及名称(日志文件扩展名.log)(默认项目根目录)
    log4j.appender.LOGFILE.Append = true    //是否往文件追加,true 追加 ;false 先清空再写
    log4j.appender.LOGFILE.Threshold = INFO
    log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout   //输出的格式:表达式进行输出
    log4j.appender.LOGFILE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
  常用的输出格式:
    %p-%d{yyyy/MM/dd hh:mm:ss}-%l-%m%n

 log4j的使用流程

导入log4j的jar包: log4j-xxx.jar
配置log4j的配置文件:在 src 下新建 log4j.properties(路径和名称都不允许改变)
在使用log4j的类中声明全局的Logger对象
  public static Logger logger=Logger.getLogger (类名.class);
使用 Logger 对象调用日志方法进行日志输出语句声明
  logger.debug("我是debug信息");      //一般在方法内部使用
  logger.info("我是info信息");      //一般在调用方法使用
  logger.warn("我是警告信息");     //一般在需要警告的位置使用
  logger.error("我是错误信息");     //在catch代码块中使用
  logger.fatal("我是致命的错误信息");    //在catch代码块中使用

ConversionPattern 日志信息,符号所代表的含义

 -X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss},输出类似:2002 10 18 22:10:28
 %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字符,就从左边较远输出的字符截掉。
 
posted @ 2020-03-11 13:10  溯鸣  阅读(338)  评论(0编辑  收藏  举报