笔记:Log4J自助餐

Evernote Export body, td { font-family: 微软雅黑 Light; font-size: 14pt; }

笔记·Log4J快速入门

创建时间:04/07/2015 Saturday 18:29
更新时间:04/07/2015 Saturday 19:48
作者:liker.xu


  • 日志原理 (输出控制)
 if(debug)

sout("this is a debug message.")

  • JDK 1.4+ Logging
  • ALL,FINEST,FINER,FINE,CONFIG,INFO,WARNING,SEVERE,OFF

  • Log4j (log4j-.jar) [Apache] 1996
  • ALL,TRACE,DEBUG,INFO,WARNING,ERROR,FITAL,OFF
  • 级别高的level会屏蔽级别低的信息
    • public static Logger logger = Logger.getLogger(helloworld.class)
      • log.trace("…..")
      • log.debug("…..")
  • 配置文件log4j.properties[classpath] (控制输出级别,输出到哪儿,输出附加什么信息,输出格式等)
    • log4j.logger.com.helloworld.logging.Logtest = DEBUG,MYLOG
    • Log4j.properties 文件配置
      • PropertyConfigurator.configure("etc/Log4j.properties")
      • classpath loading by default
      • log4j.xml
  • 内置大量优化缓存
    • 初始化时打开文件,保持写操作
    • 日志代码字符串连接 isXXXEnabled()?

  • commons-logging [Apache commons类库]
    • 灵活选择日志方式(log4j优先被选择)统一两者的API
    • public static Log log = LogFactory.getLog(HelloWorld.class)

    • 3个重要概念
      • 日志记录器Logger
        • Logger log = Logger.getLogger(HelloWorld.class)
        • 单例模式
        • 取类名作为自己的名称
        • 根记录器rootLogger,存在继承制度
          • log4.rootLogger=ERROR,A1
        • Category概念:通过设置类别来设置类别下所有的logger
          • log4j.category.com = DEBUG
      • 输出地 org.apache.log4j.Appender接口
        • 常用的输出地:控制台(log4j.ConsoleAppender),文件,数据库,远程服务器etc
        • Logger 支持多个Appender
        • log4j.appender.配置
          • 输出到控制台:log4j.appender = org.apache.log4j.ConsoleAppender
            • Threshold设置启用级别
            • 需要配置layout属性
            • target 输出到 system.out 或 system.err
          • 输出到文件: org.apache.log4j.FileAppender
          • 支持相对路径与绝对路径
          • 指定文件名称: log4j.appender.f.File =
          C:\tomcat.log
        • 追加文件设置:log4j.appender.f.Appender = true (false 为清空,默认为true)
      • 输出到按大小滚动文件: org.apache.log4j.RollingFileAppender
        • 把日志文件输出到指定位置,文件达到指定大小,会自动更名
          • 指定输出文件位置
          • 滚动文件名
          • 追加方式
          • MaxFileSize = 10KB 文件达到10kb就自动改名
          • MaxBackupIndex = 100 ,最多备份100个文件
          • rolling.log -> rolling.log.1 -> rolling.log.2 -> … -> rolling.log.100
      • 输出到按日期滚动文件:org.apache.log4j.DailyRollingFileAppender
        • 设置滚动日期格式:.DatePattern = .yyyy-MM-dd
        • daily_rolling.log.2008-08-08
      • 输出到JDBC数据库:org.apache.log4j.JDBCAppender
        • 配置驱动,连接字符串,用户名,密码,以及SQL语句
        • 需要数据库驱动,需要先创建数据库,并建立数据库日志表?能否自动建立
        • log4j.appender.DATABASE.sql = INSERT INTO tb_log (date,priority,message,classname) VALUES (‘%d’,’%p’,’%m’,’%c’)
        • 短时间大量连接数据库可能会导致连接失败,谨慎使用JDBC输出
      • 输出到SOCKET套接字:SocketAppender
        • 使用SocketServer自己编写程序,在某个特定的端口监听
      • 输出到SMTP邮件(SMTPAppender)[log4j-1.2.15以上版本支持]
        • 配置邮件服务器地址,用户名,密码,发件人邮箱,收件人邮箱etc
        • 短时间大量发出ip会被邮件服务器封掉ip,谨慎使用SMTPAppender
      • 自定义输出:实现Appender接口,继承AppenderSkeleton类
    • Log4j 能够自动取得各种环境数据
      • 时间,级别,类名,文件名,方法名,所在行数etc
  • 日志格式化处理器Layout
    • log.error()的参数只包含日志信息
    • 负责格式化日志信息,利用Layout可以附加其他信息
      • org.apache.log4j.PatternLayout
        • 自定义输出信息(日期,时间,所在的线程,类名,文件名,信息级别,文件行数等)
        • layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS}[%C]-[%p] %m%n
        • 设置输出内容的长度,不够长用空格补齐,使内容变得整齐
          • %10.20p %-10p
          • 正整数表示右对齐,负整数表示左对齐,数字表示最小宽度,小数点表示最大宽度,超出则截取
      • org.apache.log4j.HTMLLayout
      • org.apache.log4j.XMLLayout
        • 比较好解析(利用DOM技术与SAX技术)
        • 无法直接被解析,需要额外XML文件来加载

  • MORE SETTINGS:
    • 设置编码方式
    • 设置是否缓存


Log4j 常用参数
  • %c logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间。
  • %C 调用logger的类的全名(包含包路径)。
  • %d 日志记录时间,{<日期格式>}使用ISO8601定义的日期格式。
  • %F 调用logger的源文件名。
  • %l 日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
  • %L 调用logger的代码行%m 输出消息。
  • %M 调用logger的方法名。
  • %n 当前平台下的换行符。
  • %p 该条日志的优先级。
  • %r 从程序启动时到记录该条日志时已经经过的毫秒数。
  • %t 产生该日志事件的线程名。
  • %x 按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志。
  • %X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
  • %% 显示一个百分号。)

  • 记录日志时,可以使用Apache的commons-logging日志,该log只是个接口,如果有Log4j,则使用Log4j记录日志,否则会使用JDK的log。Log4J配置文件为Log4j.properties ,需要配置根日志rootLogger,输出地Appender,格式化处理器Layout。rootLogger是所有Log的父辈,除非重新覆盖,否则所有的log都将继承rootLogger配置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值