Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 区分wildfly日志中的日志条目_Java_Logging_Slf4j_Logstash_Wildfly - Fatal编程技术网

Java 区分wildfly日志中的日志条目

Java 区分wildfly日志中的日志条目,java,logging,slf4j,logstash,wildfly,Java,Logging,Slf4j,Logstash,Wildfly,我有这样的问题:我有几个应用程序在一个wildfly上运行。我想以某种方式区分(过滤、计数等)日志条目。 在应用程序中,我使用slf4j 我尝试在应用程序启动时设置MDC字段(从startup singleton开始),但wildfly没有记录它。是否有任何方法使MDC可见,或者有任何其他方法来区分应用程序 顺便说一句,我们正在使用SocketAppender与logstash和elasticsearch-也许这很重要 提前谢谢。试试看 logstash gelf包含JBoss7/Wildfly

我有这样的问题:我有几个应用程序在一个wildfly上运行。我想以某种方式区分(过滤、计数等)日志条目。 在应用程序中,我使用slf4j

我尝试在应用程序启动时设置MDC字段(从startup singleton开始),但wildfly没有记录它。是否有任何方法使MDC可见,或者有任何其他方法来区分应用程序

顺便说一句,我们正在使用SocketAppender与logstash和elasticsearch-也许这很重要

提前谢谢。

试试看

logstash gelf包含JBoss7/Wildfly8模块和LogHandler,用于评估MDC并允许您添加静态值。您可以下载并将其放到WildFly服务器的模块目录中

对于web应用程序来说,MDC通常是一种很好的方法。如果应用程序自己创建线程(MDB、AsyncEJB、定时器/调度器),则需要在应用程序处理开始之前设置MDC(例如,在MDB的消息上)

如果您的应用程序使用来自不同包(不同的记录器名称)的记录器,则可以创建不同的GELF LogHandler,其属性可帮助您识别应用程序。 示例配置可能如下所示:

<custom-handler name="GelfLoggerForApp1" class="biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler" module="biz.paluch.logging">
    <level name="INFO" />
    <properties>
        <property name="host" value="udp:localhost" />
        <property name="port" value="12201" />
        <property name="facility" value="YourApp1" />
        <property name="includeFullMdc" value="true" />
    </properties>
</custom-handler>

<custom-handler name="GelfLoggerForApp2" class="biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler" module="biz.paluch.logging">
    <level name="INFO" />
    <properties>
        <property name="host" value="udp:localhost" />
        <property name="port" value="12201" />
        <property name="facility" value="YourApp2" />
        <property name="includeFullMdc" value="true" />
    </properties>
</custom-handler>

...

<logger category="com.app1">
    <handlers>
        <handler name="GelfLoggerForApp1"/>
    </handlers>
</logger>

<logger category="com.app2">
    <handlers>
        <handler name="GelfLoggerForApp2"/>
    </handlers>
</logger>

...

SocketAppender是指log4j appender吗?它在哪里配置?是的,我是说log4j appender。它是在wildfly的standalone.xml中配置的。遗憾的是,logstash gelf在这里不是一个选项,因为它只支持UDP,这是无法平衡的。而且UDP也不能保证消息的传递。