我的路由log4j2.xml应该基于用户登录的角色日志文件。
假设一个用户连续3天登录应用程序,做大约半个小时的事情,然后退出。因此,根据要求,应该为登录用户创建3个日志文件(每天一个文件在单独的文件中),例如。
john-20-11-2015.log,
john-21-11-2015.log,
john-22-11-2015.log
下面是Log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="WARN" name="MySite" monitorInterval="30">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<pattern>[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%c{1}] - %msg%n</pattern>
</PatternLayout>
</Console>
<RollingFile name="error-log"
fileName="D:/myLogs/error [${date:yyyy-MM-dd}].log" filePattern="D:/myLogs/error-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%c{1}] - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
<RollingFile name="trace-log"
fileName="D:/myLogs/trace [${date:yyyy-MM-dd}].log" filePattern="D:/myLogs/trace-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%c{1}] - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
<Routing name="RoutingAppender">
<Routes pattern="$${ctx:logFileName}">
<Route>
<RollingFile name="Rolling-${ctx:logFileName}" append="true"
fileName="D:/myLogs/${ctx:logFileName}~${date:yyyy-MM-dd}.log"
filePattern="D:/myLogs/%d{yyyy-MM-dd}-%i.log">
<PatternLayout
pattern="SERVER-LOG: [%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
</RollingFile>
</Route>
<Route ref="Console" key="$${ctx:logFileName}" />
</Routes>
</Routing>
</Appenders>
<Loggers>
<Root level="trace" additivity="false">
<Appender-Ref ref="Console"/>
<appender-ref ref="error-log" level="error"/>
<appender-ref ref="trace-log" level="trace"/>
<Appender-Ref ref="RoutingAppender" />
</Root>
</Loggers>
</Configuration>
我打电话来
ThreadContext.put("logFileName", userName);
要在路由appender中追加日志,日志在相应的日志中正确追加,我正在注销方法期间清除线程上下文
ThreadContext.remove("logFileName");
ThreadContext.clearAll();
我用tomcat托管了我的应用程序。日志文件是根据文件名模式根据每个用户的已登录用户生成的,但日志不是每天生成的,而是在前一天日志中附加用户的当天日志
john-20-11-2015.log包含21号和22号的日志
它的角色只有在tomcat停止启动时才是一个新的日志文件。
伙计们帮帮我。。有什么问题吗
仅在创建追加器时才计算filename属性。它不会在每次滚动时更改。您应该在每次滚动时获得一个新文件,该文件中确实包含正确的日期。
这不是你看到的吗?
我想你需要DailRollingFileAppender这里就是一个例子
也请看类似的问题
例子:
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
...
<param name="DatePattern" value="'.'yyyy-MM-dd" />
...
</appender>
使用Log4j2.8,有没有一种方法可以让我的日志每天旋转,但使当前文件具有恒定的名称? 示例: 我尝试了以下配置,但没有成功: 此外,当我在某一天首次启动应用程序时,我会遇到以下例外情况:
我用的是log4j2.14。1. 我想做的是有一个appender,它允许我每天有一个日志文件,但在N天后删除旧的日志(例如,我希望最多有10天的日志)。 我尝试过使用DirectWriteRolloverStrategy,它看起来不错,每天创建一个日志文件,但显然无法删除旧文件,因此我的日志目录中充满了日志;maxFiles属性似乎只设置了与文件模式匹配的时间段内允许的最大文件数(请参见http
我在研究这个问题时发现的几乎所有内容都是针对Log4J1.x的,并讨论了一个似乎在2.0中不存在的datePattern参数。 下面是我的log4j2.xml文件: 我正在将信息和以上内容写入日志文件,并将调试写入控制台(目前)。这些文件被写得很好,但它们似乎每天都在滚动(这似乎是默认的)。
我目前正在使用log4j2为我的web应用程序编写日志。我已经配置了一个滚动文件追加器,可以在每晚午夜滚动。 我的log4j2.xml如下: 目前,这会写入名为application.log的日志,然后在午夜将当前的application.log文件复制到application yyy-MM-DD . log(文件名中的日期会被正确替换),并在第二天继续在application.log中记录日志。
1)我想每天使用log4j2.xml.生成日志文件,我使用RollingFile appender标记来实现同样的功能。但是,它将日志附加在同一文件上。 2)下面是我们在log4j.xml中使用的类别标签,我想知道在log4j2.xml中类别标签的等价物是什么? 3) 如何使用log4j2中的所有属性定义snmptrappender?
问题内容: 我想知道是否有人可以通过一些SQL帮助我,以便在两天或更长时间(让我们以7天为参考)期间返回登录到数据库表中的唯一身份用户的数量。 我的日志表在每行中都包含一个时间戳(ts)和user_id,代表当时该用户的活动。 以下查询从该日志返回每日活动用户或DAU: 现在,让我们说我想在此单个查询中添加(或至少以最有效的方式进行检索)每周活动用户或7天期间记录的唯一身份用户总数。但是,我不想将