相关疑难解决方法(0)

如何使用一个log4j配置文件创建2个单独的日志文件?

我无法弄清楚如何配置我的log4j,以便我的debugLog和我的reportLog彼此分开(不是附加的).为什么,在下面的配置中,reportsLog始终为空?

log4j.rootLogger=TRACE, stdout, debugLog

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.appender.debugLog=org.apache.log4j.FileAppender
log4j.appender.debugLog.File=logs/debug.log
log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout
log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.reportsLog=DEBUG,reportsLog
log4j.appender.reportsLog=org.apache.log4j.FileAppender
log4j.appender.reportsLog.File=logs/reports.log
log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout
log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
Run Code Online (Sandbox Code Playgroud)

这是我的Java代码:

package test;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class HelloLogger {

    static final Logger debugLog = Logger.getLogger("debugLog");
    static final Logger resultLog = Logger.getLogger("reportsLog");

    public static void main(String[] args) {
        PropertyConfigurator.configure("log4j.properties");
        debugLog.debug("Hello debugLog message");   
        resultLog.debug("Hello reportsLog message");
    }   
}
Run Code Online (Sandbox Code Playgroud)

java logging log4j

72
推荐指数
2
解决办法
11万
查看次数

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

正如在这个链接中所讨论的:如何在log4j中创建自己的Appender?

为了在log4j 1.x中创建自定义appender,我们必须扩展AppenderSkeleton类并实现其append方法.

类似地我们如何在log4j2中创建自定义appender,因为我们没有扩展AppenderSkelton类,所有其他appender扩展AppenderBase类.

java logging log4j log4j2

48
推荐指数
2
解决办法
4万
查看次数

如何在log4j2属性中设置类的日志级别

在log4j中我可以在属性文件中指定一个类来记录调试级别,如下所示:

log4j.logger.com.mycompany.mypackage.ClassName=DEBUG
Run Code Online (Sandbox Code Playgroud)

我如何在log4j2中执行此操作?注意我仍然需要使用新的属性文件(不是xml或json).

TIA

java log4j log4j2

15
推荐指数
1
解决办法
6752
查看次数

Log4j2的RoutingAppender的通配符模式

我试图使用Log4j2的新RoutingAppender基于MDC(Log4j2中的ThreadContext)路由不同的日志.我想做的是以下内容:

  • 如果MDC映射有$ contextId - >追加到$ contextId appender(特定日志)
  • 如果MDC没有$ contextId - >追加到主appender(通用日志)

我想在标记中使用通配符模式实现此目的,然后使用for contextId($ {ctx:contextId})中的key参数进行过滤,并使用默认(不带键参数)作为主appender,但是我没有知道哪个值是那个通配符.

任何帮助表示赞赏,也许我正在走错路.我一直在阅读关于过滤器但似乎没有按我的意愿工作.

谢谢!

java logging log4j log4j2

6
推荐指数
1
解决办法
5784
查看次数

Log4j2:动态创建多个日志的日志文件

我目前正在创建一个可以拥有模块的系统(将它们视为插件),其中每个模块都可以拥有自己的专用日志.

我想使用log4j2项目进行日志记录,但我似乎对文件appender有些麻烦.

主项目(模块加载器和整个事物的"核心")应该有自己的日志文件,而模块应该有自己的(如mod_XXXXXXXX.log).

通过阅读有关appender的文档,我发现了这个FileAppender类,我打算使用它.直到我发现我不能简单地将appender添加到由创建的默认记录器LogManager.getLog().

LogManager返回的记录器是与Logger接口不同的记录器.

甚至搜索都没有给我任何近乎解决方案,我发现只是xml配置中的预定义文件日志 - 这不是我想要的.

谢谢你的阅读; 即使是最轻微的线索也欢迎:)

java logging log4j log4j2

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

log4j2 .properties文件的KeyValuePair

如何在propterties文件中的log4j2中创建keyvaluepair?

我知道在log4j版本1中,它完成了:

log4j.appender.x.additionalFields={'key': 'value'}
Run Code Online (Sandbox Code Playgroud)

并且log4j2中的XML方式是:

  <KeyValuePair key="key" value="value"/>
Run Code Online (Sandbox Code Playgroud)

所以这样做是为这样的属性文件:

`appender.x.keyValuePair ={'key': 'value'}`
Run Code Online (Sandbox Code Playgroud)

properties log4j2

5
推荐指数
1
解决办法
940
查看次数

在 log4j2.properties 中配置异步记录器

我想在 log4j2.properties 文件中使一些记录器异步。在 xml 格式中,您可以添加为

<Loggers>
    <AsyncLogger name="com.foo.Bar" level="info">
    </AsyncLogger>
</Loggers>
Run Code Online (Sandbox Code Playgroud)

我在 log4j2.properties 中尝试将其作为 loggers = com-foo-Bar

asyncLogger.com-foo-Bar.name = com.foo.Bar
asyncLogger.com-foo-Bar.level = INFO
Run Code Online (Sandbox Code Playgroud)

但是这个语法似乎是错误的。

配置它的正确方法是什么?

logging properties log4j2

5
推荐指数
1
解决办法
2409
查看次数

在Log4J2 YAML中使用属性

我正在尝试在log4j2.yaml中使用属性。等效的XML是这个。

<Configuration>
<Properties>
    <Property name="log-path">logs</Property>
    <Property name="archive">${log-path}/archive</Property>
</Properties>
<Appenders>
. . .
Run Code Online (Sandbox Code Playgroud)

我试过了

Configutation:
  name: Default
  properties:
    property:
      name: log-path
      value: "logs"
      name: archive
      value: ${log-path}/archive
  Appenders:
Run Code Online (Sandbox Code Playgroud)

但是这些属性没有被选择。例如,以下代码创建一个$ {log-path}文件夹来存储日志文件,而不是所需的日志文件夹。

fileName: ${log-path}/rollingfile.log
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

yaml log4j2

4
推荐指数
1
解决办法
2792
查看次数

在iPhone应用程序中创建多个日志文件

我想在我的iPhone应用程序中创建两个日志文件.如果我使用freopen()将NSLog输出重定向到文件,那么所有日志语句将进入一个提到的文件.
但是我想把一些日志语句放到一个文件中,而有些则放入不同的文件中.

任何想法,我该怎么做?

iphone logging nslog ipad ios

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

如何使用log4j2(xml中的MDC)在不同文件中写入不同的日志?

现在我正在使用这样的结构:Appender:

<RollingFile name="user.log" append="true" fileName="users/%MDC{USERNAME}.txt"
                 filePattern="users/archive/%MDC{USERNAME}-%d{MM-dd-yyyy}-%i.txt.gz">
        <PatternLayout pattern="%-5p %d{MMMM-dd HH:mm:ss} %X: %c - %m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="50 MB"/>
        </Policies>
    </RollingFile>
Run Code Online (Sandbox Code Playgroud)

记录仪:

    <appender-ref ref="user.log">
        <ThreadContextMapFilter onMatch="ACCEPT" onMismatch="DENY" operator="or">
            <KeyValuePair key="USERNAME" value="%X{USERNAME}"/>
            <KeyValuePair key="IP" value="%X{IP}"/>
        </ThreadContextMapFilter>
    </appender-ref>
Run Code Online (Sandbox Code Playgroud)

但它不适用于MDC密钥.我如何在xml中使用MDC密钥来配置RollingFileAppender?

java configuration logging mdc log4j2

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

使用log4j2的多个线程的不同日志文件

我正在运行一个Java应用程序,在其中调用多个线程,每个线程都有一些唯一的名称。现在,我想为每个文件创建多个日志文件,并且日志文件的名称应与线程名称相同。使用log4j2是否可以。请帮我写log4j2配置文件。

先感谢您。

java configuration logging log4j log4j2

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

如何在 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
查看次数

标签 统计

log4j2 ×10

logging ×9

java ×8

log4j ×7

configuration ×3

properties ×2

ios ×1

ipad ×1

iphone ×1

mdc ×1

nslog ×1

yaml ×1