xte*_*rez 10 rhel rsyslog tomcat systemd-journald
我有一个安装了 Apache Tomcat 7.0 的 RHEL7 服务器,在最近更新到 RHEL7.1 之后,所有到 ${catalina.base}/logs/catalina.out 的日志记录都停止了。但是我在 journalctl 中收到日志。
如果我输入 journalctl -u tomcat 我会得到日志。有什么方法可以让我也将日志记录到 catalina.out 吗?
cat /usr/share/tomcat/logs/catalina.out
no output
journalctl -u tomcat
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
Aug 20 10:07:14 server.example.com server[26435]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
...
Run Code Online (Sandbox Code Playgroud)
Sok*_*kel 10
Jamie 的回答是正确的,您可以强制 rsyslog 记录 tomcat 的情况。但是,这并不能解释为什么rhel 7 上的 tomcat 7 没有登录到 catalina.out。或者如果是,为什么它同时登录到 catalina.out 和带有日期的 catalina(如果您没有使用 RPM 安装)。
首先,在过去的 7.0.42 左右,Red Hat 的脚本使用 catalina.out,因为他们的脚本模仿 RHEL 6 的行为。据我所知,他们使用“分叉”服务systemd
. 当7.0.56发布后,他们改变了这一切完全由在/ usr / libexec目录/ tomcat的武力使tomcat的新脚本和包装在运行simple
模式,而不是forked
,允许systemd有PID控制,并stdout
与stderr
去杂志。中仍然有一个catalina.$DATE.log
文件/var/log/tomcat
,但信息比普通catalina.out
.
其次,让我们看看/etc/tomcat/logging.properties。您会看到它以特定方式在 catalina、localhost、manager、host-manager 之间整理日志。您还会注意到它也有 rsyslog 工具支持,以及它基本上是如何“处理”它的。它归结为ConsoleHandler
那个文件中的。更改这些将更改/var/log/tomcat
.
journalctl -u tomcat
将向您展示 catalina.out 应该拥有的一切。据我所知,如果不修改 /usr/libexec/tomcat 中 Red Hat 的包装器,没有一种可靠的方法可以让所有内容都转到 catalina.out。如果您确实修改了这些脚本并且出现了更新,您的更改将被覆盖。
如果您确实需要 catalina.out,请使用 Jamie 的 rsyslog 示例配置。只要知道它不仅会填满那个,而且 systemd 日志也会有相同的信息。
创建一个/etc/rsyslog.d/tomcat.conf
包含接下来两行的新文件对我有用:
programname,contains,"server" /var/log/tomcat/catalina.out
programname,contains,"server" ~
Run Code Online (Sandbox Code Playgroud)
然后重启你的 rsyslog 守护进程:
service rsyslog restart
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37911 次 |
最近记录: |