log4j2的一些配置,为某个类某个方法单独文件打印日志,定时删除日志

原创 2018年04月17日 16:26:56

log4j2.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration status="OFF">
    <!-- 定义下面的引用名 -->
    <Properties>
        <!--linux目录 /logs -->
        <!--<property name="basePath">/logs</property>-->
        <property name="basePath">${sys:catalina.home}/logs/webchat</property>
        <property name="rolling_pattern">%d{yyyy-MM-dd}-%i.gz</property>
        <property name="every_file_size">10MB</property><!-- 日志切割的最小单位 -->
        <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n</property>
    </Properties>

    <!--先定义所有的appender -->
    <appenders>
        <!--这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT" >
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="trace" onMatch="ACCEPT"  onMismatch="DENY" />
            <!--这个都知道是输出日志的格式 -->
           <PatternLayout pattern="${log_pattern}"  charset="UTF-8"/>
        </Console>

        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <!-- 按月生成归档日志,可以使用 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz" -->
        <RollingFile name="RollingFile" fileName="${basePath}/sinter.log"
            filePattern="${basePath}/sinter.log${rolling_pattern}" >
            <PatternLayout pattern="${log_pattern}"  charset="UTF-8"/>
            <SizeBasedTriggeringPolicy size="${every_file_size}" />
        </RollingFile>

        <!--fileName com.sinter.interceptor.IndexInterceptor.java  方法日志 -->
        <RollingFile name="InterceptorRollingFile" fileName="${basePath}/interceptor.log"
                     filePattern="${basePath}/sinter.log${rolling_pattern}" >
            <PatternLayout pattern="${log_pattern}"  charset="UTF-8"/>
            <SizeBasedTriggeringPolicy size="${every_file_size}" />
        </RollingFile>

        <!--fileName com/sinter/controller/login/LoginController.java  sendCode方法日志 -->
<!--        <File name="sendCodeFile" fileName="${basePath}/sendCode.log" append="false">
            <PatternLayout pattern="${log_pattern}"/>
        </File>-->
        <RollingFile name="sendCodeRollingFile" fileName="${basePath}/sendCodeRollingFile.log" append="true"
                     filePattern="${basePath}/sendCodeRollingFile.log${rolling_pattern}">
            <PatternLayout pattern="${log_pattern}"  charset="UTF-8"/>

            <Policies>
                <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                <!-- 每天凌晨0点  匹配的所有文件在10天或更长时间内将在翻滚时间删除。-->
                <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
            </Policies>

            <DefaultRolloverStrategy>
                <Delete basePath="${basePath}" maxDepth="2">
                    <IfFileName glob="*.gz" />
                    <IfLastModified age="10d" />
                </Delete>
            </DefaultRolloverStrategy>

        </RollingFile>

    </appenders>
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!--建立一个默认的root的logger,需要在root的level中指定输出的级别, -->
        <root level="INFO" >
            <appender-ref ref="RollingFile" />
            <appender-ref ref="Console" />
        </root>
        <!--将logger中的 additivity 属性配置为 false,则这个logger不会将日志流反馈到root中。-->
        <Logger name="sendCodeLogger" additivity="false" level="INFO">
            <!--<appender-ref ref="sendCodeFile" level="INFO" />-->
            <appender-ref ref="sendCodeRollingFile" level="INFO" />
        </Logger>
        <Logger name="interceptorLogger" additivity="false" level="INFO">
            <appender-ref ref="InterceptorRollingFile" level="INFO" />
        </Logger>
    </loggers>

</configuration>

java类中代码片段如下:

@Controller
@RequestMapping("/login")
public class LoginController extends BaseController{

    static Logger sendCodeLogger = LogManager.getLogger("sendCodeLogger");


@RequestMapping(value = "/sendCode", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public String sendCode(String phone,HttpServletRequest request) {

    String result = "error";

    try {
        String ip = CommonUtil.getRemoteIp(request);
        sendCodeLogger.info("###################ip为: "+ip);

        Enumeration em = request.getParameterNames();
        sendCodeLogger.info("###################开始记录手机验证码接口中的HttpServletRequest.getParameterNames");
        while (em.hasMoreElements()) {
            String name = (String) em.nextElement();
            String value = request.getParameter(name);
            sendCodeLogger.info("getParameter参数:"+name+" = "+value);
        }
        sendCodeLogger.info("###################结束记录getParameter参数");

Microsoft Windows CE 硬件兼容性列表

Microsoft Windows CE 硬件兼容性列表 摘要:本硬件兼容性列表提供与 Microsoft Windows CE 操作系统兼容的代表性硬件外围设备的清单。 目录简介Microsoft ...
  • ghj1976
  • ghj1976
  • 2001-05-03 18:21:00
  • 2626

log4j指定包或类打到单独的日志文件的配置

    根据日志定位问题的时候,如果所有的日志都打到一个日志文件里,查问题就很不直观了。    一、指定某个路径的包或类打到单独的日志文件    log4j.xml 配置如下: &amp;lt;app...
  • bruce128
  • bruce128
  • 2015-01-15 17:53:12
  • 8084

配置log4j屏蔽掉某个类的log日志打印

在log4j的配置文件下配置log4j.logger.xxx=errorxxx:表示要屏蔽的类=后面 表示这个类下的日志只打印error级别的...
  • a18057814637
  • a18057814637
  • 2018-02-26 14:48:18
  • 552

使用log4j2打印日志

log4j2的使用
  • JackSparrowlj
  • JackSparrowlj
  • 2017-08-02 17:04:43
  • 787

log4j针对某个类输出到一个日志做…

log4j.logger.com.zjs.bh.utils.PubLogUtils=INFO,PubLog log4j.appender.PubLog=org.apache.log4j.Rollin...
  • li951418089
  • li951418089
  • 2015-12-24 10:30:22
  • 2345

logback.xml配置,指定类输出日志到指定文件

1、 package com.app; @Controller public class aapp1 {     private static final Logger logge...
  • yeqingyun2012
  • yeqingyun2012
  • 2018-04-08 11:44:38
  • 184

Log4j详细配置(包括指定类名,不打console等设置)

li #log4j for QUEUE log4j.logger.Q=INFO,queue log4j.additivity.Q=false log4j.appender.queue=...
  • liangbinny
  • liangbinny
  • 2014-07-23 19:57:12
  • 4969

logback为单独的包配置日志输出文件

项目中使用了jetty,产生的日志太多,单个日志文件中绝大部分都是jetty的debug日志,业务日志很少,因此重新配置logback将jetty的日志使用单独的文件存储 1.添加一个appender...
  • cgyf520
  • cgyf520
  • 2016-10-20 11:43:39
  • 4634

Log4j 为单独的类生成单独的日志文件

最近公司项目需要去网络上下载图片,根据不同情形将日志保存到不同的文件中。具体说就是普通的日志信息输出到一个单独的文件,图片下载失败的日志单独保存到另一个文件中,以便后期回溯。 log4j配置...
  • FX_SKY
  • FX_SKY
  • 2013-04-24 11:19:54
  • 4544

Log4j 为每一个类产生单独的配置文件

log4j.logger.pm.service.simpleService.TestSimple11_3=info,userLog,stdout   类的路径 log4j.appender.user...
  • wangpengzhi19891223
  • wangpengzhi19891223
  • 2015-02-27 10:50:28
  • 773
收藏助手
不良信息举报
您举报文章:log4j2的一些配置,为某个类某个方法单独文件打印日志,定时删除日志
举报原因:
原因补充:

(最多只允许输入30个字)