Logging 如何在WSO2 ESB中的每服务日志中选择主机名

Logging 如何在WSO2 ESB中的每服务日志中选择主机名,logging,log4j,wso2,wso2esb,pattern-layout,Logging,Log4j,Wso2,Wso2esb,Pattern Layout,我在WSO2 ESB中根据每个服务的链接创建每个服务的日志。布局转换模式工作正常,但没有拾取“主机名”。我不知道是什么问题,WSO2在“log4j.properties”文件中使用了这个模式本身。但它在每服务日志中不起作用 注意:我正在使用WSO2 ESB 4.8.1 在“log4j.properties”文件中的配置: # Seperate LOG File for MyService Service log4j.category.SERVICE_LOGGER.MyService=INFO,

我在WSO2 ESB中根据每个服务的链接创建每个服务的日志。布局转换模式工作正常,但没有拾取“主机名”。我不知道是什么问题,WSO2在“log4j.properties”文件中使用了这个模式本身。但它在每服务日志中不起作用

注意:我正在使用WSO2 ESB 4.8.1

在“log4j.properties”文件中的配置:

# Seperate LOG File for MyService Service
log4j.category.SERVICE_LOGGER.MyService=INFO, MyService_PROXY_APPENDER
log4j.additivity.SERVICE_LOGGER.MyService=false
log4j.appender.MyService_PROXY_APPENDER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MyService_PROXY_APPENDER.File=logs/MyService-service.log
log4j.appender.MyService_PROXY_APPENDER.datePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.MyService_PROXY_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.MyService_PROXY_APPENDER.layout.ConversionPattern=[%d{ISO8601}] - %5p - [%X{host}] - %c{1} - %n
[2015-01-14 12:37:34,063] -  INFO - [] - MyService - 
这将创建单独的日志文件并记录以下输出

输出:

# Seperate LOG File for MyService Service
log4j.category.SERVICE_LOGGER.MyService=INFO, MyService_PROXY_APPENDER
log4j.additivity.SERVICE_LOGGER.MyService=false
log4j.appender.MyService_PROXY_APPENDER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MyService_PROXY_APPENDER.File=logs/MyService-service.log
log4j.appender.MyService_PROXY_APPENDER.datePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.MyService_PROXY_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.MyService_PROXY_APPENDER.layout.ConversionPattern=[%d{ISO8601}] - %5p - [%X{host}] - %c{1} - %n
[2015-01-14 12:37:34,063] -  INFO - [] - MyService - 
问题:

# Seperate LOG File for MyService Service
log4j.category.SERVICE_LOGGER.MyService=INFO, MyService_PROXY_APPENDER
log4j.additivity.SERVICE_LOGGER.MyService=false
log4j.appender.MyService_PROXY_APPENDER=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MyService_PROXY_APPENDER.File=logs/MyService-service.log
log4j.appender.MyService_PROXY_APPENDER.datePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.MyService_PROXY_APPENDER.layout=org.apache.log4j.PatternLayout
log4j.appender.MyService_PROXY_APPENDER.layout.ConversionPattern=[%d{ISO8601}] - %5p - [%X{host}] - %c{1} - %n
[2015-01-14 12:37:34,063] -  INFO - [] - MyService - 

其余的转换说明符工作正常,但
[%X{host}]
不工作。

我注意到,log4j转换模式中默认使用的hostipMDC条目(对于错误日志文件、服务附录,…附录)在4.8.1中没有初始化

解决方法可以是自己初始化主机的值,例如,在中介开始时使用以下脚本:

    <script language="js"><![CDATA[
        importPackage(Packages.java.net);
        importPackage(Packages.org.apache.log4j);
        try {
            var addr = InetAddress.getLocalHost();
            if (addr != null) {
                var hostname = addr.getHostName();
                MDC.put("host", hostname);
            }
        } catch (e) {
        }
    ]]></script>


但这只是一个工作基础,我对更好的解决方案感兴趣

@user3141034你能研究一下这个问题吗?谢谢它起了作用,但我不明白为什么这些条目没有在4.8.1中初始化。你能不能也指导我如何使用脚本中介器在WSO2中获取pid?var ip=addr.getHostAddress();兄弟,我说的是进程id而不是ip。我要的是PID而不是ip。。抱歉搞混了。ip/pid。。。对不起,我必须学习阅读;-)说真的,我帮不了你