0

我在 Centos 机器上使用 Tomcat 9。来自 Tomcat 应用程序的日志在 /opt/tomcat/logs.catalina.out 中生成。有没有办法将这些日志传递给服务日志(journalctl -u MyTomcat.service -f)?

我从 /etc/systemd/system.MyTomcat.service 触发我的服务

ExecStart=/opt/tomcat/startup.sh(startup.sh调用catalina.sh启动)

我可以在 catalina.out 中看到日志,但 journcalctl 只有这些行,但 catalina 包含我的应用程序中的所有日志记录

 Feb 28 08:14:39 192.168.1.2 systemd[1]: Starting My Tomcat Service... 
 Feb 28 08:14:39 192.168.1.2systemd[1]:  Started My Tomcat Service. 
 Feb 28 08:14:39 192.168.1.2tomcat[23222]: Tomcat started.
4

1 回答 1

1

嗨,我找到了帖子的解决方案。如果有其他人正在寻找它,这就是我所做的。

1. /etc/rsyslog.conf
   #add imfile module
   $ModLoad imfile
   $IncludeConfig /etc/rsyslog.d/*.conf
   ...
   *.* @@<SYSLOG_SERVER ADDRESS>:<SYSLOG SERVER PORT>

2. /etc/rsyslog.d/catalina_ruleset.conf
   template(
     name = "my_template"
     type = "string"
     string = "<%PRI%>%timegenerated% %HOSTNAME% %syslogtag%: %msg%"
   )
   input(
     type="imfile"
     File="<catalina.out location>"
     Tag="MyTag"
     PersistStateInterval="1"
     reopenOnTruncate="on"
     freshStartTail="on"
     ruleset="My_ruleset"
   )
  ruleset(name="My_ruleset") {
     action(
         type="omfwd"
         template=""my_template""
         queue.saveonshutdown="on"
         action.resumeRetryCount="-1"
         Target="<SYSLOG_SERVER ADDRESS>"
         Port="<SYSLOG SERVER PORT>"
         Protocol="tcp"
       )
     }
于 2022-03-04T09:38:33.360 回答