-
jar包
<slf4j.version>1.7.2</slf4j.version> <log4j.version>1.2.17</log4j.version> <!--log4j--> <!--日志管理--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!--slf4j--> <!--日志的接口--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <!--日志的实现--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency>` <!--日志输出--> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>
-
log4j.properties的配置
配置详情和解释
注意:log4j.appender.debug.File =${carRental.root}WEB-INF/logs/info.log
路径的解释: ${carRental.root}:是在web.xml中配置的webAppRootKey的value值
${carRental.root}的字符串中最后有 / 所以不要加 /### set log levels ### log4j.rootLogger=debug,stdout,debug,error ### 配置根Logger:设定日志记录的最低级别 ### log4j.category.org.springframework=ERROR log4j.category.org.apache=INFO ### 输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%t] %l %m %n ### 输出到日志文件 ### log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender log4j.appender.debug.File =${carRental.root}WEB-INF/logs/info.log log4j.appender.debug.datePattern='.'yyyy-MM-dd log4j.appender.debug.append=true log4j.appender.debug.Threshold=DEBUG log4j.appender.debug.layout=org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%t] %l %m %n ### ERROR输出到日志文件 ### log4j.appender.error=org.apache.log4j.DailyRollingFileAppender log4j.appender.error.File =${carRental.root}WEB-INF/logs/error.log log4j.appender.error.datePattern='.'yyyy-MM-dd log4j.appender.error.append=true log4j.appender.error.Threshold=ERROR log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}] %l %m %n
-
web.xml的配置
需要按顺序,不然可能会有问题<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext*.xml</param-value> </context-param> <!--给日志配置路径,Root的路径--> <context-param> <param-name>webAppRootKey</param-name> <param-value>carRental.root</param-value> </context-param> <!-- 60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;这样便于日志存放位置的改变 --> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <!--Log4j--> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!--Spring的ApplicationContext 载入 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
-
在JUnit中
因为webAppRootKey没有值,所以输出的日志不在指定的位置,而是在项目的根路径下。 -
在java类中的使用
-
自定义:
import org.apache.log4j.Logger; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; /** * @author :liqiaochen * @date :Created in 2029/6/26 22:28 * @description:Log4j的工具类 * @modified By: * @version: $ */ public class Log4jUtil { private static Logger debugLogger = null; private static Logger errorLogger = null; private static Logger infoLogger = null; private static Logger countTimeLogger=null; static { loadLogger(); } public Log4jUtil() { super(); } /** * 装载系统使用的log */ static void loadLogger() { debugLogger = Logger.getLogger(""); infoLogger = Logger.getLogger("info"); errorLogger = Logger.getLogger("error"); countTimeLogger = Logger.getLogger("countTimeLogger"); } //自定义的输出类型 public static void countTimeLog(Object msg) { countTimeLogger.info(msg); } public static void countTimeLog(Object msg,Exception e) { countTimeLogger.info(msg+"\n"+getExceptionTrace(e)); } /** * @param msg: error级别的错误信息 */ public static void errorLog(Object msg) { errorLogger.error(msg); } /** * @param e: error级别的异常信息 */ public static void errorLog(Exception e) { errorLogger.error(getExceptionTrace(e)); } /** * @param e: error级别的异常信息 * @param msg: error级别的错误信息 */ public static void errorLog(Exception e, Object msg) { errorLogger.error(msg + "\n" + getExceptionTrace(e)); } /** * @param msg: debug级别的错误信息 */ public static void debugLog(Object msg) { debugLogger.debug(msg); } /** * @param e: debug级别的异常信息 */ public static void debugLog(Exception e) { debugLogger.debug(getExceptionTrace(e)); } /** * @param e: debug级别的异常信息 * @param msg: debug级别的错误信息 */ public static void debugLog(Exception e, Object msg) { debugLogger.debug(msg + "\n" + getExceptionTrace(e)); } /** * @param msg: info级别的错误信息 */ public static void systemLog(Object msg) { infoLogger.info(msg); } /** * @param e: info级别的异常信息 */ public static void systemLog(Exception e) { infoLogger.info(getExceptionTrace(e)); } /** * @param e: debug级别的异常信息 * @param msg: debug级别的错误信息 */ public static void systemLog(Exception e, Object msg) { infoLogger.info(msg + "\n" + getExceptionTrace(e)); } /** * @param e: 异常信息输出 */ public static void exOut(Exception e) { String print = getExceptionTrace(e); errorLogger.error(print); } /** * @param e: debug级别的异常信息 * //@param msg: debug级别的错误信息 */ private static String getExceptionTrace(Exception e) { String print = null; ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintWriter wrt = new PrintWriter(bout); e.printStackTrace(wrt); wrt.close(); print = bout.toString(); return print; } }
使用方式:Log4jUtil.countTimeLog(“输出日志”);
Log4j+idea+ssm的使用
最新推荐文章于 2024-07-02 22:53:38 发布