Docker GELFlogging附加字段

我正在尝试使用GELF协议将我的docker-compose文件写入到Graylog服务器。 这工作正常,使用以下configuration(docker的docker-compose.yml):

logging: driver: gelf options: gelf-address: ${GELF_ADDRESS} 

Graylog服务器接收我在Docker容器中loginJBoss实例的消息。 它还添加了一些额外的GELF字段,如container_name和image_name。

我的问题是,我怎么能自己添加额外的GELF领域? 我希望它通过_username作为额外的领域。 我在MDC上下文中有这个字段。 我可以通过使用CONSOLElogging器中的格式化程序(转换模式)将该信息添加到消息中,方法是在此logging程序中添加以下内容:

 %X{_user_name} 

但这不是我想要的,因为它将在GELF消息字段中,而不是作为单独的额外字段添加。

有什么想法吗?

在目前的docker-compose版本(1.8.0)中似乎不可能包含额外的字段。

我最终删除了docker-compose文件中的任何日志configuration,而是将GELF日志logging集成到docker容器的应用程序中。 由于我使用的是JBoss AS 7,所以我使用了这里描述的步骤: http : //logging.paluch.biz/examples/jbossas7.html

要logging容器ID,我已经添加了以下configuration:

 <custom-handler name="GelfLogger" class="biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler" module="biz.paluch.logging"> <level name="INFO" /> <properties> <property name="host" value="udp:${GRAYLOG_HOST}" /> <property name="port" value="${GRAYLOG_PORT}" /> <property name="version" value="1.1" /> <property name="additionalFields" value="dockerContainer=${HOSTNAME}" /> <property name="includeFullMdc" value="true" /> </properties> 

字段dockerContainer由Docker容器上的HOSTNAME环境variables替代,并包含containerId。 其他占位符被docker-compose环境variables替代。

通过包括完整的MDC,我能够把用户名(和一些其他领域)作为一个额外的GELF领域。 (有关MDC的更多信息,请参阅http://logback.qos.ch/manual/mdc.html