Java配置log 将日志信息输出到指定日志文件中
1、需要用到的pom.xml依赖
<!--日志捕获-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
2、在src目录下新建log4j.propertites文件或log4j.xml文件
2.1 以idea为例子:
2.2 给propertites文件命名
log4j.propertites文件
#log4j.rootLogger=[level],[Appender1],[Appender2],[Appender3]....
#这一句的意思就是设置日志输出级别以及输出目的地,可以设置多个输出目的地,
# 以逗号分隔,输出目的地的详细设置为下面的Appender设置.
# 注意:此处设置的Appender名称应与下面详细设置相对应,包括大小写;
# 此处配置了几个Appender,下面就应设置几个。
log4j.rootLogger=DEBUG, STDOUT,INF,ERR,HHT,SL,TCC
# 输出目的地详细设置:
#定义对应输出目的地:log4j.appender.appenderName = fully.qualified.name.of.appender.class.
#### ConsoleAppender:控制台输出 ####
log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
# 输出到控制台
log4j.appender.STDOUT.Target = System.out
# 指定控制台输出日志级别
log4j.appender.STDOUT.Threshold = INFO
# 默认值是 true, 表示是否立即输出
log4j.appender.STDOUT.ImmediateFlush = true
# 设置编码方式
log4j.appender.STDOUT.Encoding = UTF-8
# 日志输出布局
log4j.appender.STDOUT.layout = org.apache.log4j.PatternLayout
# 如果日志输出布局为PatternLayout 自定义级别,需要使用ConversionPattern指定输出格式
log4j.appender.STDOUT.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p] -%c -%r -%l.%M(%L) | %m%n
#### DailyRollingFileAppender: 指定周期输出到新文件 ####
log4j.appender.INF = org.apache.log4j.DailyRollingFileAppender
# 指定输出文件路径
log4j.appender.INF.File = D:/log/info.log
# 指定输出日志级别
log4j.appender.INF.Threshold = INFO
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.INF.Append = true
# 默认值是 true, 表示是否立即输出
log4j.appender.INF.ImmediateFlush = true
# 设置编码方式
log4j.appender.INF.Encoding = UTF-8
# 指定分隔周期:月,周,天,时,分
# '.': 每月
# '.'yyyy-ww: 每周
# '.'yyyy-MM-dd: 每天
# '.'yyyy-MM-dd-a: 每天两次
# '.'yyyy-MM-dd-HH: 每小时
# '.'yyyy-MM-dd-HH-mm: 每分钟
log4j.appender.INF.DatePattern ='.'yyyy-MM-dd-HH-mm
# 日志输出布局
log4j.appender.INF.layout = org.apache.log4j.PatternLayout
# 如果日志输出布局为PatternLayout 自定义级别,需要使用ConversionPattern指定输出格式
log4j.appender.INF.layout.ConversionPattern =DFA-[framework] [%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p] -%c -%r -%l.%M(%L) | %m%n
#### RollingFileAppender: 限定单个文件大小,达到阀值输出到新文件 ####
log4j.appender.ERR = org.apache.log4j.RollingFileAppender
# 指定输出文件路径
log4j.appender.ERR.File = D:/log/error.log
# 指定输出日志级别
log4j.appender.ERR.Threshold = INFO
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.ERR.Append = true
# 默认值是 true, 表示是否立即输出
log4j.appender.ERR.ImmediateFlush = true
# 设置编码方式
log4j.appender.ERR.Encoding = UTF-8
# 设置单个文件大小限制
log4j.appender.ERR.MaxFileSize = 2MB
# 设置最大备份文件记录数
log4j.appender.ERR.MaxBackupIndex = 20
# 日志输出布局
log4j.appender.ERR.layout = org.apache.log4j.PatternLayout
# 如果日志输出布局为PatternLayout 自定义级别,需要使用ConversionPattern指定输出格式
log4j.appender.ERR.layout.ConversionPattern =RFA-[framework] [%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p] -%c -%r -%l.%M(%L) | %m%n
####测试输出布局:HTMLLayout ####
log4j.appender.HHT = org.apache.log4j.RollingFileAppender
# 指定输出文件路径
log4j.appender.HHT.File = D:/log/log4jHtml.html
# 指定输出日志级别
log4j.appender.HHT.Threshold = DEBUG
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.HHT.Append = true
# 默认值是 true, 表示是否立即输出
log4j.appender.HHT.ImmediateFlush = true
# 设置编码方式
log4j.appender.HHT.Encoding = UTF-8
# 设置单个文件大小限制
log4j.appender.HHT.MaxFileSize = 2MB
# 设置最大备份文件记录数
log4j.appender.HHT.MaxBackupIndex = 20
# 日志输出布局
log4j.appender.HHT.layout = org.apache.log4j.HTMLLayout
####测试输出布局:SimpleLayout ####
log4j.appender.SL = org.apache.log4j.RollingFileAppender
# 指定输出文件路径
log4j.appender.SL.File = D:/log/log4jSL.html
# 指定输出日志级别
log4j.appender.SL.Threshold = INFO
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.SL.Append = true
# 默认值是 true, 表示是否立即输出
log4j.appender.SL.ImmediateFlush = true
# 设置编码方式
log4j.appender.SL.Encoding = UTF-8
# 设置单个文件大小限制
log4j.appender.SL.MaxFileSize = 2MB
# 设置最大备份文件记录数
log4j.appender.SL.MaxBackupIndex = 20
# 日志输出布局
log4j.appender.SL.layout = org.apache.log4j.HTMLLayout
####测试输出布局:TTCCLayout ####
log4j.appender.TCC = org.apache.log4j.RollingFileAppender
# 指定输出文件路径
log4j.appender.TCC.File = D:/log/log4jTCC.log
# 指定输出日志级别
log4j.appender.TCC.Threshold = INFO
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.TCC.Append = true
# 默认值是 true, 表示是否立即输出
log4j.appender.TCC.ImmediateFlush = true
# 设置编码方式
log4j.appender.TCC.Encoding = UTF-8
# 设置单个文件大小限制
log4j.appender.TCC.MaxFileSize = 2MB
# 设置最大备份文件记录数
log4j.appender.TCC.MaxBackupIndex = 20
# 日志输出布局
log4j.appender.TCC.layout = org.apache.log4j.SimpleLayout
log4j.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/' >
<!-- 输出到控制台 -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
</layout>
<!--过滤器设置输出的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 设置日志输出的最小级别 -->
<param name="levelMin" value="WARN" />
<!-- 设置日志输出的最大级别 -->
<param name="levelMax" value="ERROR" />
<!-- 设置日志输出的xxx,默认是false -->
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<!-- 输出到文件: DailyRollingFileAppender-->
<appender name="daily" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 设置日志信息输出文件全路径名 -->
<param name="File" value="D:/log/DailyRollingFileAppender.log" />
<!-- 设置日志每分钟回滚一次,即产生一个新的日志文件 -->
<param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" />
<!-- 附加 -->
<param name="Append" value="true"/>
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
</layout>
</appender>
<!-- 输出到文件: RollingFileAppender-->
<appender name="rolling" class="org.apache.log4j.RollingFileAppender">
<!-- 设置日志信息输出文件全路径名 -->
<param name="File" value="D:/log4j/RollingFileAppender.log" />
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<!-- 设置保存备份回滚日志的最大个数 -->
<param name="MaxBackupIndex" value="10" />
<!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
<param name="MaxFileSize" value="10KB" />
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
</layout>
</appender>
<!-- 根logger的设置-->
<root>
<level value ="INFO"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="daily"/>
</root>
</log4j:configuration>
3、测试将数据信息输出到日志文件中去
package application;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class TestQuartz {
private static Log log = LogFactory.getLog(TestQuartz.class);
public static void main(String[] args) {
log.info("真高兴,我输出到指定的日志文件中来了");
}
}
执行方法后,日志信息被打印到了D:/log/info.log文件中
同时在控制台中也有打印输出