VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

LOG4J 较深入学习总结

  LOG4J 重点在配置,调用比较简单;

  配置文件中的 Appender 就是一种输出的方式,可以有不同的输出方式,标签定义了其类型(例如 <JDBC/>,<SMTP>),属性 name 应该是 Appender 的唯一标识,也就是可以存在多个 <JDBC/>,只要其属性 name 的值不一样即可;一个 Logger 代表一种级别,可以有多个<AppenderRef/> 标签,只要其属性 ref 的值不一样即可;

  下面介绍下如何把日志信息输出到数据库和把日志信息添加到邮件发送到某个邮箱:

    先上配置文件,放在 src 路径下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error">
  <Appenders>
  
    <JDBC name="databaseAppender" tableName="application_log">
      <ConnectionFactory class="net.example.db.ConnectionFactory" method="getDatabaseConnection" />
      <Column name="EVENT_DATE" isEventTimestamp="true" />
      <Column name="LEVEL" pattern="%level" />
      <Column name="LOGGER" pattern="%logger" />
      <Column name="MESSAGE" pattern="%message" />
      <Column name="THROWABLE" pattern="%ex{full}" />
    </JDBC>
    
    <SMTP name="Mail" subject="Error Log" to="xxx@qq.com" from="xxx@163.com"
        smtpHost="smtp.163.com" smtpPort="25" bufferSize="1" smtpUsername="xxx" smtpPassword="xxx">
    </SMTP>
    
  </Appenders>
  <Loggers>
    <Root level="warn">
      <AppenderRef ref="databaseAppender"/>
      <AppenderRef ref="Mail"/>
    </Root>
  </Loggers>
</Configuration>

    只要调用 logger.warn() 即可把日志信息输出到数据库和添加到邮件发送到某个邮箱;

    两个 Appender 都有需要注意的地方:

      <JDBC/>:其中属性 patern 的属性值 "%level" 代表日志级别,"%logger" 代表 logger 所在的类的完整类名,"%message" 代表异常信息(即 exception.getMessage() 的返回值),"%ex{full}" 代表异常的具体信息,如:

      ,当然还有其他的属性值代表其他不同的信息;

      数据库的信息:

      

      <SMTP/>:选取了国内的 163 邮箱,首先要有一个 163 邮箱,然后要设置 SMTP 协议,然后网易会提供一个用于 SMTP 协议的验证码,用于第三方登录,在这里,这个验证码就是用于 LOG4J 的,用户名就是您的网易邮箱用户名,不用 SSL 的话,端口号就是 25,具体信息可到网易的网站查,bufferSize 指的是异常的次数累计到多少个时才输出,这里设置为 1,就是 warn 一个异常就输出一次(发一次邮件);之所以不选用 QQ 邮箱,是因为 QQ 邮箱启用 SMTP 协议,必须要使用更为安全的连接方式(比如:SSL),比较麻烦,所以弃用之;

  注意,其中邮件需要用到 javax.mail.jar,activation.jar;数据库需要用到 coomons-pool-1.6.jar,commons-dbcp-1.4.jar;

以上。

    

  

posted on 2017-01-17 14:24  bobo2018  阅读(151)  评论(0)    收藏  举报