我目前在log4j中有以下模式布局.我想将Process id添加到日志文件中.我该怎么做?
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)
粘贴样本日志消息
2011-01-07 11:48:21,940 [main] INFO Testing1
2011-01-07 11:48:21,942 [main] INFO Test.common.ApplicationProperties - Used log4j
Run Code Online (Sandbox Code Playgroud)
"log4j.properties" [Read only] 26 lines, 884 characters
log4j.rootCategory=DEBUG, stdout, A1
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=WARN
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p (%c) %m%n
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.A1.File=/homw/cus/logs/ccl.02.log
log4j.appender.A1.MaxFileSize=5MB
log4j.appender.A1.MaxBackupIndex=40
log4j.category.test.common.DBConnectionPool=WARN
log4j.category.test.common.DataBaseHandler=WARN
log4j.category.test.cttg.tables=WARN
log4j.category.test.middleware.tables=WARN
log4j.logger.org.apache.axis=ERROR
log4j.logger.org.apache.catalina=ERROR
Run Code Online (Sandbox Code Playgroud) 在log4j PatternLayout(log4j patternLayout)中使用时,我无法确定使用这两个log4j转换字符之间的确切区别
有人可以举个例子,说明这两个会有所不同吗?
类别是否始终与班级名称匹配?
问候,
我很难找到各种"盒子里"模式的文档
%logger
%level
%timestamp
Run Code Online (Sandbox Code Playgroud)
当然有示例页面,但我不确定这是完整的选项列表.
我也知道MDC参数可以从应用程序输出到记录器,但这涉及代码更改,这是一个与配置更改不同的野兽.
有%machineName选项还是machineIP选项?问题是我们将Web场中的所有服务器都登录到同一个数据库日志中,我们现在认为来自一台计算机的消息数量不成比例.
在log4j 2中,当大小超过指定的阈值时,我想修剪写入控制台appender的消息的结尾.
我查看了http://logging.apache.org/log4j/2.0/manual/layouts.html#PatternLayout文档但看不到截断"msg"字段结尾的选项.
"%.1000msg"将仅留下消息的最后 1000个字符.
这对我不利,因为在Java中,堆栈跟踪中的大多数内部帧都打印在消息的开头.
任何的想法?
我正在使用 log4j2 并具有以下依赖项::
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-rc1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下配置::
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="LOGGER_HOME">/logs</Property>
</Properties>
<Appenders>
<RollingFile name="application" fileName="${LOGGER_HOME}/application.log"
filePattern="${LOGGER_HOME}/application.%d{yyyy-MM-dd}_%i.log">
<PatternLayout pattern="%d{ISO8601}{GMT} %-5p %C{2} (%F:%L) - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="1 GB" />
</Policies>
</RollingFile>
<RollingFile name="framework" fileName="${LOGGER_HOME}/em-logs/framework.log"
filePattern="${LOGGER_HOME}/framework.%d{yyyy-MM-dd}_%i.log">
<PatternLayout pattern="%d{ISO8601}{GMT} %-5p %C{2} (%F:%L) - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="1 GB" />
</Policies>
</RollingFile>
<Console name="out" target="SYSTEM_OUT">
<PatternLayout pattern="%d{ISO8601}{GMT} %-5p %C{2} (%F:%L) - %m%n" />
</Console>
<Async name="asyncApplication"> …Run Code Online (Sandbox Code Playgroud) logging rollingfileappender line-numbers pattern-layout log4j2
我有以下PatternLayout:
public class EscapedEnhancedPatternLayout extends EnhancedPatternLayout {
@Override
public String format(LoggingEvent event) {
return StringEscapeUtils.escapeJava(super.format(event));
}
}
Run Code Online (Sandbox Code Playgroud)
但这会逃脱完整的日志行.
我希望有这样的东西,但仅限于消息.
但是LoggingEvent班级没有setMessage和setRenderedMessage方法.
而且我没有看到复制构造函数LoggingEvent.如果LoggingEvent有复制构造函数我可以继承LoggingEvent并覆盖下面提到的方法.
请告诉我如何解决我的问题.
我正在使用Logback进行日志记录.在第一行之后的每一行的开头是一个空格.知道为什么吗?
下面是我的logback.xml:
<?xml version="1.0" encoding="utf-8"?>
<configuration debug="true">
<property name="log.pattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg%n %ex"/>
<property name="log.file.prefix" value="${app.home}/var/log/${app.name}"/>
<appender name="DEFAULT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.file.prefix}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.file.prefix}.%d{yyyyMMdd}.%i.log.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<Pattern>${log.pattern}</Pattern>
</encoder>
</appender>
<!-- info for everything else -->
<root level="info">
<appender-ref ref="DEFAULT"/>
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这导致日志输出如下(注意第一行没有空格):
2012/02/06 13:34:09.875 INFO [BrokerService] Using Persistence Adapter: MemoryPersistenceAdapter
2012/02/06 13:34:09.875 INFO [BrokerService] ActiveMQ 5.3.1 JMS Message Broker (localhost) is starting
2012/02/06 13:34:09.875 INFO [BrokerService] For help or more information please see: http://activemq.apache.org/
2012/02/06 …Run Code Online (Sandbox Code Playgroud)