【问题标题】:How to pick host name in Per service logs in WSO2 ESB如何在 WSO2 ESB 的每个服务日志中选择主机名
【发布时间】:2015-03-12 08:27:41
【问题描述】:

我正在根据他们的official 链接在 WSO2 ESB 中制作每个服务日志。布局转换模式工作正常,但没有选择 "HostName"。我不知道有什么问题,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 - 

问题:

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

【问题讨论】:

  • @user3141034 你能调查一下吗?

标签: logging log4j wso2 wso2esb pattern-layout


【解决方案1】:

我注意到 hostip 在 log4j 转换模式(用于 ERROR_LOGFILE、SERVICE_APPENDER、... appenders)中默认使用的 MDC 条目在 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>

但这只是一种解决方法,我对更好的解决方案感兴趣

【讨论】:

  • 谢谢它的工作,但我不明白为什么这些条目没有在 4.8.1 中初始化。
  • 您能否指导我如何使用脚本中介器在 WSO2 中获取 pid?
  • var ip = addr.getHostAddress();
  • 兄弟,我说的是进程ID而不是IP。我想要 PID 而不是 ip.. 很抱歉造成混淆。
  • ip / pid ... 抱歉,我必须学会阅读 ;-) 说真的,我无法帮助你处理 PID
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
相关资源
最近更新 更多