首页 > 其他分享 >log4j结合commons-logging配置总结

log4j结合commons-logging配置总结

时间:2023-09-04 16:37:12浏览次数:63  
标签:logging console commons log4j file apache org appender


作者fbysss
关键字:logging

commons-logging是一个通用的日志接口,commons-logging.jar包中自带了一个simplelog的实现
log4j也实现了这个接口
使用通用接口,方便在于如果更换实现的方式,只要修改一个配置项即可
配置过程:
commons-logging.properties必须放置在WEB-INF/classes/下面
log4j.properties可以放这,也可以放置在WEB-INF下,但是需要在web.xml中进行配置,这样tomcat才能找到它

<web-app>
    <welcome-file-list>
   <welcome-file>hello.jsp</welcome-file>
   </welcome-file-list>
 <servlet>
    <servlet-name>log4j-init</servlet-name>
    <servlet-class>com.hedong.learning.log4j.Log4jInit</servlet-class>
    <init-param>
      <param-name>log4j</param-name>
      <param-value>WEB-INF/log4j.properties</param-value>
    </init-param>    
<load-on-startup>1</load-on-startup>  
</servlet>
</web-app>


注意这里的servlet需要自己编写。

/*
 * Created on 2005-3-2
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.beltino.util;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Log4jInit extends HttpServlet { /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occure
  */
 public void init() throws ServletException {
     String prefix = getServletContext().getRealPath("/");
     String file = getInitParameter("log4j");
     if (file != null) {
       PropertyConfigurator.configure(prefix + file);
     }
 }}

commons-logging.properties:

#--------------------------------------------------------------------------------
#根据需要配置不同的logging实现
#org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog
org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JCategoryLog
#
#----------------------------------------------------------------------------------
log4j.properties:
#这里面的console和file都是自定义的,可以自行修改
#注意的是log文件的路径,如果不指定,默认是在$TOMCAT_HOME/bin目录下。
#log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'这句用来设置每天生成上一天的日志备份文件的格式。当前最新的日志就是testlog.log要看效果,可以把电脑的日期修改为第二天暂时看看
#--------------------------------------------------------------------------------
#LOGGERS#
#defile a logger named ...
log4j.rootLogger=INFO,console,file
#define an appender named console,which is set to be a ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender#APPENDERS##
#define an appender named file,which is set to be a DailyRollingFileAppender
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File = ../webapps/test/logs/testlog.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log' 
#LAYOUTS#
#assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%p][%c] - %m%n
#=org.apache.log4j.SimpleLayout 
#assign a SimpleLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%c] - %m%n
#--------------------------------------------------------------------------------

这是另一个参考配置,可以记录jdbc的 SQL语句
http://www.delphibbs.com/keylife/iblog_show.asp?xid=12706

#定义log
log4j.rootLogger=info,console,file,DATABASE
#log4j.rootLogger=info,file,DATABASE
#log4j.rootLogger=error,file,DATABASE
#定义控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%r [%t] %-5p %c (%F:%L) %x - %m%n
#定义数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=communitymedical
log4j.appender.DATABASE.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.DATABASE.user=sa
log4j.appender.DATABASE.password=btn
log4j.appender.DATABASE.sql=INSERT INTO TLOG4J VALUES ('%-5p','%d{yyyy-mm-dd hh:mm:ss}  %-5p (%F:%L) - %m%n','%d{yyyy-mm-dd hh:mm:ss}')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=%d  %-5p (%F:%L) - %m%n
#定义文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=G:/Tomcat5/webapps/communitymedical/log/test
#log4j.appender.file.MaxFileSize=10KB
#log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d  %-5p (%F:%L) - %m%n

标签:logging,console,commons,log4j,file,apache,org,appender
From: https://blog.51cto.com/u_16245757/7352056

相关文章

  • 【转】最优日志系统,Log4j 还是 Logback?
    引言在Java项目开发中,一个正式的项目,一定离不开日志的输出,而常用的日志输出框架又绕不开Log4j和Loback。Log4jApacheLog4j是一种Java日志记录工具,它是ApacheSoftwareFoundation下的一个开源项目。Log4j旨在帮助程序员在其应用程序中记录日志,并且能够根据需要配置......
  • Java反序列化:CommonsCollections6调试分析
    JDK8u71大版本中AnnotationInvocationHandler.readObject被修改了,为了使得CC1能够利用,又造了一条CC6CC6解决的是CC1在高版本jdk上无法利用的问题这里搬一下web佬Boogipop的整理图:环境搭建JDK测试版本:JDK11基础知识1.CC1和CC6的恶意代码执行触发链再来捋顺一下这条恶......
  • Java:commons-codec实现byte数组和16进制字符串转换
    目录commons-codec实现原理封装StringUtil类commons-codec文档https://commons.apache.org/proper/commons-codec/https://mvnrepository.com/artifact/commons-codec/commons-codec坐标<dependency><groupId>commons-codec</groupId><artifactId>com......
  • SpringBoot启动启动项目出现o.s.b.d.LoggingFailureAnalysisReporter 错误解决方法
    把@SpringBootApplication改成@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})代码如下:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})publiccl......
  • Java:commons-codec实现byte数组和16进制字符串转换
    (目录)commons-codec文档https://commons.apache.org/proper/commons-codec/https://mvnrepository.com/artifact/commons-codec/commons-codec坐标<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifact......
  • Log4j输出到多个自定义文件
     引入:log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 实例: 对于log4j的简单配置,可以参见log4j文档说明,这里先来看一......
  • Apache Commons Logging 是如何决定使用哪个日志实现类的
    ApacheCommonsLogging像SLF4J一样,是个通用日志框架,广泛应用在各个开源组件中。说其通用,是因为它本身只提供了简单的日志输出的实现(org.apache.commons.logging.impl.SimpleLog和org.apache.commons.logging.impl.NoOpLog),主要是为你统一使用其他专业日志实现(Log4j、jdk1.4......
  • 双缓冲异步日志(Async Logging)
    文章目录一、日志系统简介二、功能需求三、性能需求四、高效的异步日志1、异步日志的概念2、双缓冲异步日志解析3、AsyncLogging源码4、代码运行图示五、双缓冲异步日志的相关问题一、日志系统简介日志通常用于故障诊断和追踪(trace),也可用于性能分析。日志通常是分布式系统中事......
  • Java日志框架的依赖设置备查(SLF4J, Log4j, Logback)
    前言最近在看代码的过程中,发现身边的许多人在使用Java日志框架时,对于应该引入何种依赖不甚了解,搜索网络上的文章,常常也是互不一致。这篇文章可以看着是Java日志框架的入门使用和实践建议,重点介绍不同组合方式下的依赖设置及其背后的逻辑,一方面给自己备查,另外也希望对小伙伴们......
  • Python logging.handlers模块,RotatingFileHandler、TimedRotatingFileHandler 处理器
    转自:https://blog.csdn.net/B11050729/article/details/132353220 ......