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为例子:

java 日志 数字变字符 java自定义日志输出_编码方式

2.2 给propertites文件命名


java 日志 数字变字符 java自定义日志输出_apache_02

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文件中

java 日志 数字变字符 java自定义日志输出_编码方式_03

同时在控制台中也有打印输出

java 日志 数字变字符 java自定义日志输出_apache_04