使用log4j让日志写入数据库-创新互联
之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户、管理员查看分析。因此我就花了点时间搞了一下这一功能,各位请看。摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的、打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现。关键词:log,log4j,日志,Java,DB,数据库,slf4j前提:已经配置好slf4j、log4j,能正常的往文件或控制台写日志。需求:将日志写入到数据库中。说明:使用log4j-1.2.17.jar,slf4j-api-1.7.5.jar,slf4j-log4j12-1.6.6.jar。
Log是定义的一个日志类,使用LogService对象调用logBll.add(Log log)方法即能够向数据库中添加一条日志信息。
以上文件主要增加配置了一个日志输出方向,向数据库输出,并指定了具体的处理类。在需要输出日志的地方,正常的使用:private Logger logger = LoggerFactory.getLogger(SpringServiceSupport.class);logger.error(ex);...即可。来自为知笔记(Wiz)
作者:Angel 出处:http://www.cnblogs.com/wgp13x/ 欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能推荐或关注。
本文标题:使用log4j让日志写入数据库-创新互联
文章路径:http://azwzsj.com/article/ceoiej.html
步骤一:
你得先能写入数据库,编写一个能往数据库日志表中写数据的接口,无论是WebService还是什么,这里假如是一个Java接口。Log是定义的一个日志类,使用LogService对象调用logBll.add(Log log)方法即能够向数据库中添加一条日志信息。
1 2 3 4 5 6 7 8 9 |
public class Log {
private Long id;
private String logNum;
private String userId;
private Calendar time;
private int type;
private String content;
...
} |
步骤二:
编写一个继承自AppenderSkeleton类的类,并重写它的append方法。在append方法里面,即调用了上一步定义的Java接口,logBll.add(log),向数据库中写入一条日志信息。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class DBAppender extends AppenderSkeleton {
private LogService logBLL = new LogService();
@Override
protected void append(LoggingEvent arg0) {
if (!arg0.getLoggerName().startsWith(Constants.ProjetNS))
return ;
Log log = new Log();
log.setType(arg0.getLevel().toInt());
log.setTime(Calendar.getInstance());
log.setUserId( "system" );
log.setContent(arg0.getRenderedMessage());
logBll.add(log);
}
} |
步骤三:
改新log4j.properties配置文件,类似如下所示。
创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为恩阳企业提供专业的网站设计制作、成都网站设计,恩阳网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Root logger option
log4j.rootLogger=WARN, stdout, file, db
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = logs/log.log
log4j.appender.file.Append = true
log4j.appender.file.Threshold = ERROR
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.db = com.aitanjupt.angel.log.DBAppender |
王安琪,英文名Angel,南京邮电大学计算机应用技术硕士学位。 熟悉Java、C#编程语言。专注于WebService、海量数据处理、搜索引擎技术、消息中间件技术、分布式文件存储、.NET应用程序开发、系统架构设计。主要从事大数据管理系统的研发,项目经理,系统架构师,就职于江苏金陵科技集团有限公司。
Email:aitanjupt@hotmail.com
QQ:289770363
本文标题:使用log4j让日志写入数据库-创新互联
文章路径:http://azwzsj.com/article/ceoiej.html