我使用Log4j及其SyslogAppender将消息写入Linux系统日志。 输出的消息如下所示:
Oct 12 09:06:03 localhost.localdomain 3364 [Thread-5] INFO TEST MESSAGE MyApplicationLogger - This is my message
我想用运行该应用程序的服务器的名称replacelocalhost.localdomain,但似乎无法弄清楚如何。 这是我的configuration文件,以防万一它是有用的:
log4j.logger.MyApplicationLogger=INFO,SyslogAppender log4j.appender.SyslogAppender=org.apache.log4j.net.SyslogAppender log4j.appender.SyslogAppender.syslogHost=localhost log4j.appender.SyslogAppender.Facility=USER log4j.appender.SyslogAppender.layout=org.apache.log4j.PatternLayout log4j.appender.SyslogAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n log4j.appender.SyslogAppender.source=My Application
编辑 :在服务器上configuration计算机名称,并且hostname命令返回以下内容:
$ hostname server12
但是我注意到hosts文件的第一行是
将Java servlet添加到WAMPconfiguration的机器最简单的方法是什么?
在多台Windows机器上自动执行基于Java的软件安装
用于Java开发的Linux发行版
Android Studio找不到我的JDK
单个尝试catch块的数组中的多个项目
127.0.0.1 localhost.localdomain localhost
不过,我很犹豫要改变这一点。
Java如何停止之前在程序中启动的shell脚本
使用python与java程序进行交互
了解Windows上Web服务器的高系统cpu使用情况
无法findtools.jar
是否有任何Java库来调整Linux上的IO调度优先级
这是你需要的:
log4j.appender.SyslogAppender.header = true
这个问题是因为你的机器不知道它是自己的主机名。 这可以通过以非特权用户身份运行命令hostname来演示。
如果你有root权限,那么你可以使用设置你的主机名
$ hostname myserversHostname
手册页
为了在重新启动时使这个改变永久化,你将需要在/ etc中的某个地方设置一个配置文件(正是哪一个取决于你的发行版)。
Debian / ubuntu:/ etc / hostname
Redhat / CentOS / Fedora:/ etc / sysconfig / network
我想出了如何解决这个问题,所以如果别人面临同样的问题,我也可以把解决办法留在这里。
log4j.appender.SyslogAppender.syslogHost=server12
不知道为什么它的作品,但使用服务器名称,而不是localhost为我工作。
如果您不想在log4j属性或XML文件中“硬编码”主机名,最好的解决方案是由dtyler和yegor256建议的组合。 确保您的主机名设置正确,然后在log4j.xml <param name="Header" value="true"/>使用log4j.appender.SyslogAppender.header = true或<param name="Header" value="true"/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。