小编Rem*_*pma的帖子

动态设置列值 JDBC Appender:Log4j2

我在 log4j2 xml 中配置了 JDBC 附加程序

<JDBC name="databaseAppender" tableName="TL_FX_LOG">
  <ConnectionFactory class="org.apache.jmeter.protocol.java.test.ConnectionFactory" method="getDatabaseConnection" />
  <Column name="LOG_DATE" isEventTimestamp="true" />
   <Column name="LOG_DESC" pattern="%message" />
      <Column name="LOG_Batch" literal="someproperty" />
Run Code Online (Sandbox Code Playgroud)

我需要从 Java 代码设置文字(LOG_Batch)的值。

Logger.debug("hello");
Run Code Online (Sandbox Code Playgroud)

hello 将作为 %message 值传递。但是如果我有一个变量

String log_batch="test";
Run Code Online (Sandbox Code Playgroud)

如何将 log_batch 变量值传递给 JDBC 附加程序。

java configuration logging log4j2

3
推荐指数
1
解决办法
2733
查看次数

log4j DailyRollingFileAppender不会使用日期模式创建文件

我希望在Java 8应用程序中使用org.apache.log4j,我希望每小时创建一个新的日志文件,其名称为:“ mylog.log.2014-09-24-18”。我阅读了我需要使用DailyRollingFileAppender的信息,但是当我启动该应用程序时,日志文件名为“ mylog.log”。

这是我的log4j.properties文件的内容:

# Set root logger level and its appenders
log4j.rootLogger=DEBUG, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.file.Append=true
log4j.appender.file.File=mylog.log
log4j.appender.file.encoding=UTF-8
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

您能告诉我如何实现吗?

java logging log4j

3
推荐指数
1
解决办法
8087
查看次数

如何在 log4j2 中创建自定义 RewritePolicy?

我正在尝试在 Log4j2 中编写我自己的 RewritePolicy。该文件指出:

RewritePolicy 是一个接口,它允许实现在传递给 Appender 之前检查并可能修改 LogEvent。RewritePolicy 声明了一个必须实现的名为 rewrite 的方法。该方法通过 LogEvent 传递,可以返回相同的事件或创建一个新的事件。

这是我的java类

public final class MarkerInjectorRewritePolicy implements RewritePolicy {

    @Override
    public LogEvent rewrite(final LogEvent event) {
        final Marker marker = event.getMarker();
        if (marker == null)
            return event;

        // If there's a Marker, add it to the ThreadContextMap so the RoutingAppender can properly routes log messages
        event.getContextMap().put("_marker", marker.getName());
        return event;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的yaml 配置文件:

Rewrite:
  name: REWRITE_APPENDER
  AppenderRef:
    ref: ROUTING_APPENDER
  PropertiesRewritePolicy:
    Property: …
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

3
推荐指数
2
解决办法
2884
查看次数

无法找到追加器

我正在尝试在Spring Web应用程序中从迁移log4j 1log4j 2。构建它时,出现以下错误:

2015-08-10 16:26:36,222 DEBUG Built Plugin[name=AppenderRef] OK from factory method.
2015-08-10 16:26:36,222 DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for builder factory method...
2015-08-10 16:26:36,222 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger. Going to try finding a factory method instead.
2015-08-10 16:26:36,223 DEBUG Still building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for factory method...
2015-08-10 16:26:36,223 DEBUG Found factory method [createLogger]: public static org.apache.logging.log4j.core.config.LoggerConfig org.apache.logging.log4j.core.config.LoggerConfig$RootLogger.createLogger(java.lang.String,org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.core.config.AppenderRef[],org.apache.logging.log4j.core.config.Property[],org.apache.logging.log4j.core.config.Configuration,org.apache.logging.log4j.core.Filter).
2015-08-10 16:26:36,224 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element Root …
Run Code Online (Sandbox Code Playgroud)

java configuration logging slf4j log4j2

3
推荐指数
1
解决办法
2万
查看次数

带有MemoryMappedFile和break文件的Log4j2

是否可以将MemoryMappedFile与策略一起使用以将文件分解为固定大小,例如250MB?我的log4j2.xml是这样的,但我想将日志文件分解为250MB,我需要使用MemoryMappedFile来实现IO性能.

<Configuration monitorInterval="30">
    <Appenders>
        <MemoryMappedFile name="MemoryMap" fileName="output/jscsi-out.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{2} - %m%n(%L)" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="250 MB" />
            </Policies>
        </MemoryMappedFile>
    </Appenders>

    <Loggers>
        <Logger name="br.com" level="debug" additivity="false">
            <AppenderRef ref="MemoryMap" />
        </Logger>
        <Logger name="org.jscsi.target.TargetServer" level="debug"
            additivity="false">
            <AppenderRef ref="MemoryMap" />
        </Logger>
        <Logger name="org.jscsi.target.storage" level="info"
            additivity="false">
            <AppenderRef ref="MemoryMap" />
        </Logger>
        <Logger name="org.jscsi.service" level="debug" additivity="false">
            <AppenderRef ref="MemoryMap" />
        </Logger>
        <Root level="error" includeLocation="true">
            <AppenderRef ref="MemoryMap" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

3
推荐指数
1
解决办法
334
查看次数

空消息工厂的 Log4j 2.6 警告

升级到 log4j2 2.6 版后,我面临以下警告:

2016-06-06 16:36:14,920 localhost-startStop-1 WARN The Logger foo.bar was created with the message factory org.apache.logging.log4j.spi.MessageFactory2Adapter@437958b6 and is now requested with a null message factory (defaults to org.apache.logging.log4j.message.ParameterizedMessageFactory), which may create log events with unexpected formatting.
Run Code Online (Sandbox Code Playgroud)

在 2.5 版本中没问题,有什么评论吗?!

我在附加程序中看到日志消息

java logging log4j log4j2

3
推荐指数
1
解决办法
1111
查看次数

如何在Log4j2中向Logger添加appender

在Log4j 1.2中,您可以简单地使用记录器并在运行时添加一个appender.例如,这对于测试目的而言非常方便.我们曾经创建了一个模拟appender并将其添加到记录器中.随后我们可以做出不同的断言.

与log4j2有什么相同之处?

例如,此示例显示了其他人如何添加测试追加器.

log4j2页显示了如何添加附加目的地的几个例子.但是,它们会在整体上下文中添加appender.这似乎与为一个特定记录器添加appender不同.

另一个观察是,如果你使用org.apache.logging.log4j.core.Logger而不是org.apache.logging.log4j.Logger,你仍然可以添加appender.但是大多数人使用org.apache.logging.log4j.Logger.实际上,LogManager返回org.apache.logging.log4j.Logger的一个实例.所以,我不知道如何连接这两个类以及它们是否应该连接.

另一个观察是,如果我打电话

      LogManager.getContext().getConfiguration().getLoggers()
Run Code Online (Sandbox Code Playgroud)

我可以在上下文中获取所有LoggerConfig对象的ist.我随后将appender添加到任何LoggerConfig对象.但问题是,如何获取与org.apache.logging.log4j.Logger实例相关的LoggerConfig?

这让我很困惑.

java logging log4 log4j2

3
推荐指数
1
解决办法
2164
查看次数

导入org.apache.log4j无法解析

Eclipse,Selenium,W​​indows

导入org.apache.log4j无法解析

我已经遵循了我能找到的所有记录的步骤,即:

1)以下两个jar文件位于项目构建路径中:log4j-core-2.6.2.jar和log4j-api-2.6.2.jar

2)以上两个jar文件位于以下文件夹中:C:\ eclipse\apache-log4j-2.6.2-bin

3)上面的文件夹在我的系统CLASSPATH环境变量C:\ eclipse\apache-log4j-2.6.2-bin中

4)项目在项目根目录中包含以下log4j.properties文件

    # This sets the global logging level and specifies the appenders
log4j.rootLogger=INFO, theConsoleAppender
    # settings for the console appender
    log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.theConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Run Code Online (Sandbox Code Playgroud)

5)我已经清理了这个项目

6)导入失败的是:import org.apache.log4j.Logger;


间歇性地我也收到此错误消息

"类型org.apache.log4j.Logger无法解析.它在第一行间接引用所需的.class文件":

包com.example;

当我执行项目时,此错误消失 - >清除

但导入log4j的错误仍然存​​在.


任何想法将不胜感激.

java apache logging log4j log4j2

3
推荐指数
1
解决办法
3万
查看次数

停止 log4j2 记录器初始化日志打印到标准输出

以下log4j2.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
  <Properties>
    <Property name="log-path">C:/logs</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${log-path}/myexample.log"
         filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log" >
      <PatternLayout>
    <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
      </PatternLayout>
      <Policies>
    <SizeBasedTriggeringPolicy size="1 KB" />
      </Policies>
      <DefaultRolloverStrategy max="4"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Logger name="root" level="debug" additivity="false">
      <appender-ref ref="RollingFile" level="debug"/>
    </Logger>
  </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

以下输出将打印到标准输出。

2016-08-22 19:21:59,384 main DEBUG Initializing configuration XmlConfiguration[location=jar:file:/C:/demo-program-1.0-SNAPSHOT.jar!/log4j2.xml]
2016-08-22 19:21:59,415 main DEBUG Installed script engines
2016-08-22 19:22:00,509 main DEBUG Oracle Nashorn Version: 1.8.0_101, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, …
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

3
推荐指数
1
解决办法
1844
查看次数

我们如何设置log4j2日志级别的默认值而不是环境变量

我正在使用log4j2配置xml,我正在使用环境变量来设置这样的日志级别

<Root level="${env:LOG_LEVEL}">
Run Code Online (Sandbox Code Playgroud)

但我希望有一些默认值,以防env var未设置我尝试在xml中定义一些属性但没有运气.谢谢

java configuration logging log4j log4j2

3
推荐指数
1
解决办法
1249
查看次数

标签 统计

java ×10

logging ×10

log4j2 ×9

log4j ×7

configuration ×6

apache ×1

log4 ×1

slf4j ×1