내 직장에서 누군가가 Tomcat을 설정하여 syslog에 로그인한 적이 있습니다. 문제는 이러한 메시지가 콘솔에도 전송된다는 것입니다.
시스템은 RHEL6이며 관련 RPM은 다음과 같습니다.
rsyslog-5.8.10-10.el6_6.x86_64
tomcat-7.0.64-1.x86_64
다음 두 명령을 사용하여 콘솔에 보내는 메시지를 무음으로 설정하려고 했습니다.
dmesg -n 1
sysctl -w kernel.printk="1 4 1 3"
아무런 차이가 없었으며 이러한 메시지는 계속해서 전송됩니다.Log4j이 시스템에서는 사용되지 않는 것 같습니다. server.xml
Tomcat에서 이 섹션은 로깅을 위한 것입니다 .
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" rotatable="false"
pattern="%h %l %u %t "%r" %s %b" />
내가 중지하면 rsyslog
이 메시지도 중지됩니다. Tomcat 에서 로깅을 설정하기 위해 어떤 작업을 수행했는지 모르겠습니다 rsyslog
. 저는 Tomcat 전문가가 아닙니다. Tomcat은 콘솔에 메시지를 보내는 유일한 애플리케이션입니다. 다른 항목은 전송되지만 rsyslog
Tomcat 항목 이외의 콘솔에는 아무것도 기록되지 않습니다.
명령을 시도한 이후 dmesg -n 1
Tomcat이 최고 수준에서 메시지를 보내는 것으로 의심되지만 이를 담당할 수 있는 코드를 찾을 수 없습니다.
콘솔의 메시지 예(여러 Tomcat 인스턴스를 허용하기 위해 자체 제작한 RPM인 tomcat-instance06이라고 표시되어 있음). 방금 콘솔에 항상 [FATAL] 메시지가 표시된 다음 동일한 메시지가 두 번째로 표시되는 것을 확인했습니다.
Message from syslogd@localhost at Jun 22 16:52:12 ...
[FATAL] some.portal-app: [model.website.PageService] RequestID already used - ...#012Detail: #012detail#012Tag context: #012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 486#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 484#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, l...
Message from [email protected] at Jun 22 16:52:12 ...
482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 482#012/opt/tomcat-instance06/webapps/ROOT/model/WebserviceRequest.cfc, line 268#012/opt/tomcat-instance06/webapps/ROOT/model/website/PageService.cfc, line 194#012/opt/tomcat-instance06/webapps/ROOT/model/website/PageService.cfc, line 86#012/opt/tomcat-instance06/webapps/ROOT/model/RequestContextDecorator.cfc, line 16#012/opt/tomcat-instance06/webapps/ROOT/model/RequestContextDecorator.cfc, line 232#012/opt/tomcat-instance06/webapps/ROOT/handlers/General.cfc, line 596#012/opt/tomcat-instance06/webapps/ROOT/coldbox/system/web/Controller.cfc, line 764#012/opt/tomcat-instance06/webapps/ROOT/coldbox/system/web/Controller.cfc, line 648#012/opt/tomcat-instance06/webapps/ROOT/coldbox/system/web/services/ExceptionService.cfc, line 51#012/opt/tomcat-instance06/webapps/ROOT/coldbox/system/Coldbox.cfc, line 350#012/opt/tomcat-instance06/webapps/ROOT/coldbox/system/Coldbox.cfc, line 382#012/opt/tomcat-instance06/webapps/ROOT/Application.cfc, line 60
내용은 다음과 같습니다 /etc/rsyslog.conf
.
#
# Use traditional timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog
# Provides --MARK-- message capability
$ModLoad immark
# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock
# set ratelimit interval
$SystemLogRateLimitInterval 2
$SystemLogRateLimitBurst 150
# Provides UDP syslog reception
$ModLoad imudp
# Syslog server listen address
$UDPServerAddress 127.0.0.1
# Syslog server listen UDP port
$UDPServerRun 514
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local0.none;local6.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/mail.log
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local6.warning /var/log/audit_orcl.log
LOCAL6.WARNING /var/log/audit_orcl.log
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# Log all messages to the following syslog servers
<I have removed this section containing ip's of syslogservers>
/etc/rsyslog.conf에서 kern을 주석 처리하려고 시도했습니다.*
#kern.* /dev/console
그러나 rsyslog를 다시 시작한 후에도 여전히 이러한 Tomcat 메시지를 콘솔에 기록합니다.
이러한 메시지를 비활성화하려면 어디를 찾아야 할지 아시나요?
답변1
찾았어요(ㅋㅋㅋ)
이것을 주석 처리하면 /etc/rsyslog.conf
메시지가 중지됩니다.
# Everybody gets emergency messages
*.emerg *
또한 tomcat이 지속적으로 로깅하는 유일한 애플리케이션이라는 사실은 잘못 프로그래밍된 애플리케이션이 각 메시지를 치명적인 메시지로 로깅하여 콘솔로 이동하기 때문이라는 사실도 알아냈습니다.