日志:log4j的使用

log4j构成

组件作用
Logger控制要启用或禁用哪些日志记录语句,并对日志信息进行级别限制
Appenders指定了日志将打印到控制台还是文件中
Layout控制日志信息的显示格式

配置

可以使用properties的配置方式,也可以xml的配置方式,这里讲的是前者。
所有日志都有根日志记录,这个root Logge是所有日志的祖先,意味着你新建的都是子日志记录,这个根日志都能共享你的日志信息。

详细配置:

##根logger主要定义log4j支持的日志级别及输出目的地,其语法为:
## log4j.rootLogger = [ level ] , appenderName, appenderName...
### Info级别的日志,默认输出到总控制台
log4j.rootLogger = info,Console,DATABASE
##自定义的日志是否记录在父里面
#log4j.additivity.xxx=false
#mybatis记录日志,com.tgb.mapper为包,也可以再缩小范围到具体文件具体方法,TRACE级别会顺带输出结果,记录很多可以改为DEBUG只记录sql
log4j.logger.com.tgb.mapper=DEBUG,D

#Console控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %-5p [%c.%M.%F\:%L] - %m%n %X{REQUEST_UUID} %X{HOST_IP} %X{HOST_NAME} %X{APPKEY} 

#output2file输出文件
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.D.File = ${catalina.base}/log/D/output2file.txt
#log4j.additivity.D=false
log4j.appender.D.Append = true 
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout 
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %L\:%r ] - [ %p ] %m%n 

#自定义日志Mylogger
log4j.logger.Mylogger=INFO,Mylogger

log4j.appender.Mylogger = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.Mylogger.File = ${catalina.base}/log/Mylogger/Mylogger.txt
log4j.additivity.Mylogger=false
log4j.appender.Mylogger.Append = true 
log4j.appender.Mylogger.Threshold = INFO 
log4j.appender.Mylogger.layout = org.apache.log4j.PatternLayout 
log4j.appender.Mylogger.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %L\:%r ] - [ %p ] %m%n 

#通过扫描包名类名
log4j.logger.com.tgb.controller.UserController=INFO,class
log4j.appender.class = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.class.File = ${catalina.base}/log/C/C.txt
log4j.additivity.class=false
log4j.appender.class.Append = true 
log4j.appender.class.Threshold = INFO
log4j.appender.class.layout = org.apache.log4j.PatternLayout 
log4j.appender.class.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [(%F\:%L)] - [ %p ] %m%n 

# 错误日志写入数据库  
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://127.0.0.1:3306/eb_error_log
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=root
# 本处设置为"ERROR"或以上级别在数据库存储  
log4j.appender.DATABASE.Threshold=ERROR
# 存储数据  
log4j.appender.DATABASE.sql=INSERT INTO error_log(Message) VALUES ('%d - [%t] %-5p %c:%L - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=%d - [%t] %-5p %c:%L - %m%n

#发送邮件,跟目录需要加上,否则不起作用Mail
#log4j的邮件发送appender,如果有必要你可以写自己的appender  
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送  
log4j.appender.MAIL.Threshold=ERROR
#缓存文件大小,日志达到10k时发送Email  
log4j.appender.MAIL.BufferSize=10
#发送邮件的邮箱帐号  
log4j.appender.MAIL.From=xxxxxxx@163.com
#SMTP邮件发送服务器地址  
log4j.appender.MAIL.SMTPHost=smtp.163.com
#SMTP发送认证的帐号名  
log4j.appender.MAIL.SMTPUsername=woshilinqin163@163.com
#SMTP发送认证帐号的密码  
log4j.appender.MAIL.SMTPPassword=xxxxxx
#是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息  
log4j.appender.MAIL.SMTPDebug=true
#邮件主题  
log4j.appender.MAIL.Subject=Log4JErrorMessage
#发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;  
#如果需要发副本给某人,则加入下列行  
#log4j.appender.MAIL.Bcc=xxx@xxx.xxx  
log4j.appender.MAIL.To=625424841@qq.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework]%d - %c -%-4r[%t]%-5p %c %x -%m%n

简单理解就是下面配置都是一组组的。程序中通过获取对应的appender对象或者类Clazz,然后日志就可以对应输出到配置的控制台或者文件输出。默认根路径是会一起记录的。log4j.additivity.xxx=false 则声明不给根日志记录。
程序代码中使用获取对应的appender方式:
前面的对应配置里面的包名配置方式,后者使用name属性进行日志记录。

    Logger logger=Logger.getLogger(UserController.class);
    Logger logger1=Logger.getLogger("Mylogger");
    //获取根日志
    Logger log=Logger.getRootLogger();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值