Apeliya 2021-04-30 17:43 采纳率: 50%
浏览 121

log4j2 怎么设置日志文件输出到 web目录下或者工程目录下

如题 ,我在论坛找到不少教程都没有作用,官方文档奈何英语水平不够不太读的Spring明白

Spring 是5.0.2  Servlet为3.1  log4j版本为2.13   Spring MVC

在web.xml中添加过各种配置 例如 

log4j2.xml里是这样设置的

<?xml version="1.0" encoding="UTF-8"?>
<!-- 设定日志的等级 当status=debug 可以查看log4j的装配过程 monitorInterval 指定log4j2自动重新配置的监测间隔时间,单位是秒 -->
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--status="WARN" :用于设置log4j2自身内部日志的信息输出级别,默认是OFF-->
<!--monitorInterval="30"  :间隔秒数,自动检测配置文件的变更和重新配置本身-->
<Configuration status="info" monitorInterval="10">

    <properties>
        <!--自定义一些常量,之后使用${变量名}引用-->
        <property name="filenameLog">/logs/payPlatform.log</property>
        <property name="infoNameLog">/logs/info.log</property>
        <property name="TEST_HOME">D:/Data</property>
    </properties>
    <!-- Appenders : 定义输出内容,输出格式,输出方式,日志保存策略等,常用其下三种标签[console,File,RollingFile]-->
    <Appenders>
        <!-- 配置输出到控制台 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 输出日志的格式 -->
            <PatternLayout pattern="[%d{HH:mm:ss.S}] [%t] %-5level %logger{36} - %msg%n" />
        </Console>

        <!--File :同步输出日志到本地文件-->
        <!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
        <!--append="false" :根据其下日志策略,每次清空文件重新输入日志,可用于测试-->
        <File name="log" fileName="${filenameLog}" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <DefaultRolloverStrategy max="10"/>
        </File>

        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="RollingFileInfo" fileName="${infoNameLog}"
                             filePattern="$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.log">
            <!--ThresholdFilter :日志输出过滤-->
            <!--level="info" :日志级别,onMatch="ACCEPT" :级别在info之上则接受,onMismatch="DENY" :级别在info之下则拒绝-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
            <!-- Policies :日志滚动策略-->
            <Policies>
                <!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件, modulate="true" : 产生文件是否以0点偏移时间,即6点,12点,18点,0点-->
                <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
                <!-- SizeBasedTriggeringPolicy :文件大小滚动策略-->
                <SizeBasedTriggeringPolicy size="100MB" />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20" />
        </RollingFile>

        <!-- Warn输出到文件 -->
        <RollingFile name="RollingFileWarn" fileName="${sys:catalina.home}/Warn.log"
                              filePattern="$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
                     <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
                     <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                     <Policies>
                         <TimeBasedTriggeringPolicy/>
                         <SizeBasedTriggeringPolicy size="100 MB"/>
                     </Policies>
                     <DefaultRolloverStrategy max="20"/>
                 </RollingFile>

        <!-- Error输出到文件 -->
        <RollingFile name="RollingFileError" fileName="${sys:catalina.home}/Error.log"
                              filePattern="$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
                     <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                     <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                     <Policies>
                         <TimeBasedTriggeringPolicy/>
                         <SizeBasedTriggeringPolicy size="100 MB"/>
                     </Policies>
                 </RollingFile>

    </Appenders>
    <!-- 定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <Loggers>
        <!-- 过滤掉spring和mybatis的一些无用的DEBUG信息 -->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <logger name="RollingFileInfo" level="info" additivity="false">
            <AppenderRef ref="RollingFileInfo" />
        </logger>
        <!-- Root中启用上面的配置 level设置输出的等级 -->
        <Root level="all">
            <!-- 输出到控制台 -->
            <appender-ref ref="Console"/>
            <!-- Info输出到文件 -->
            <appender-ref ref="RollingFileInfo"/>
            <!-- Warn输出到文件 -->
            <appender-ref ref="RollingFileWarn"/>
            <!-- Error输出到文件 -->
            <appender-ref ref="RollingFileError"/>
        </Root>
        <!--AsyncLogger :异步日志,LOG4J有三种日志模式,全异步日志,混合模式,同步日志,性能从高到底,线程越多效率越高,也可以避免日志卡死线程情况发生-->
        <!--additivity="false" : additivity设置事件是否在root logger输出,为了避免重复输出,可以在Logger 标签下设置additivity为”false”-->
<!--        <AsyncLogger name="AsyncLogger" level="trace" includeLocation="true" additivity="false">
            <appender-ref ref="RollingFileError"/>
        </AsyncLogger>-->
    </Loggers>
</Configuration>

设置的绝对路径可以用 其他的都用不了 包括设置${sys:catalina.home}  ${catalina.base}  ${web:rootDir}  都不起效果

因为要部署在Linux服务器上 不能采用绝对路径的办法 该怎么写路径?

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-04-30 17:50
    关注

    改个路径就行了

     <RollingFile name="RollingFileError" fileName="${web:rootDir}/WEB-INF/logs/license-error.log"
                          filePattern="${web:rootDir}/WEB-INF/logs/license/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
                 <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                 <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                 <Policies>
                     <TimeBasedTriggeringPolicy/>
                     <SizeBasedTriggeringPolicy size="5 MB"/>
                 </Policies>
    </RollingFile>
    评论

报告相同问题?

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错