POM坐標
在pom.xml中添加日志依賴
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.77</version>
</dependency>
跟目錄下添加log4j.properties文件,IDEA中放在main/resource下,Eclipse放在src下面下。
Log4j根據日志信息的重要程度,從高到低分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。
log4j.rootLogger = [ level ] , appenderName, appenderName, …把指定級別以上的日志信息輸出到指定的一個或者多個位置,level默認info,即只輸出info以上的內容(不輸出DEBUG和All)。
log4j-1.2.16.jar包下的org.apache.log4j.PatternLayout.class文件查看所有ConversionPattern代表的含義,或查詢官網api(此處為1.2版本)
log4j.properties
log4j.rootLogger=INFO,console,file,errorFile #指定包名配置 log4j.logger.com.gmtx.system.checkzwtask=INFO,zwFile log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n ###保存info級別的日志到單個文件,${user.home}為C:/Users/登錄的用戶 #log4j.appender.File=org.apache.log4j.FileAppender #log4j.appender.file.File=${user.home}/logs/info.log #log4j.appender.file.Append = true #log4j.appender.file.encoding=UTF-8 #log4j.appender.file.Threshold = INFO #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=[ %p ] %-d{yyyy-MM-dd HH:mm:ss} [ %t:%L ] %37c %3x - %m%n ###按天保存info級別的日志,${catalina.base}為Tomcat位置 log4j.appender.file= org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=${catalina.base}/logs/info.log log4j.appender.file.DatePattern=yyyy-MM-dd'-info.log' log4j.appender.file.Append = true log4j.appender.file.encoding=UTF-8 log4j.appender.file.Threshold = INFO log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[ %p ] %-d{yyyy-MM-dd HH:mm:ss} [ %t:%L ] %37c %3x - %m%n ###按天保存異常信息到單獨文件### log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.errorFile.File = ${catalina.base}/logs/error.log log4j.appender.errorFile.DatePattern=yyyy-MM-dd'-error.log' log4j.appender.errorFile.Append = true log4j.appender.errorFile.encoding=UTF-8 log4j.appender.errorFile.Threshold = ERROR log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout log4j.appender.errorFile.layout.ConversionPattern = [ %p ] %-d{yyyy-MM-dd HH:mm:ss} [ %t:%L ] %37c %3x - %m%n ###指定包名下的輸出到指定文件 log4j.appender.zwFile=org.apache.log4j.FileAppender log4j.appender.zwFile.layout=org.apache.log4j.PatternLayout log4j.appender.zwFile.File = /logs/checkzwtask.log log4j.appender.zwFile.encoding=UTF-8 log4j.appender.zwFile.Append=true log4j.appender.zwFile.layout.ConversionPattern=[ %p ] %-d{yyyy-MM-dd HH:mm:ss} [ %t:%L ] %37c %3x - %m%n #設置指定包的level等級(rootLogger代表所有),但是不能再指定appender,否則每個appender會打印兩次 log4j.logger.org.smart4j=DEBUG
將日志通用root級別設置為ERROR,並提供了兩種日志appender,分別是console與file。
最后一句指定只有org.smart4j包下的類才能輸出DEBUG級別的日志,和第一行的rootLogger相似,只不過把rootLogger換成了具體包名。
其他有用設置
#文件大小到達指定尺寸的時候產生一個新的文件 log4j.appender.file = org.apache.log4j.RollingFileAppender #指定輸出目錄 log4j.appender.file.File = /home/logs/ssm.log #定義文件最大大小 log4j.appender.file.MaxFileSize = 10M
測試,這里user.home為C:\Users\Administrator
public class PropsUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PropsUtil.class); public static void main(String[] args) throws IOException { /*測試日志*/ LOGGER.error("text"); } }
沒有產生文件:
rootLogger自定義的appender名稱。一定要注意大小寫,上下一定要一致。

web.xml配置文件
<!-- log4j classpath:為src/resource下面 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener>
