##JavaでLog4jを使ってSyslogにログ出力したい
#前提・実現したいこと
Java初心者のため、かなり基本的な質問で申し訳ないですが、よろしくお願いします。
JavaでLog4jを使用してLinuxサーバのSyslogに以下の形式のログを出力したいです。
どうやったらシスログに出力できるか、xmlの形式を読み込めるかを教えていただけないでしょうか。
いくつか形式を変えたLogを作成したいため、appenderを呼び分け、出力するファイルを分ける方法もご教授いただけると嬉しいです。
####形式
MM DD hh:mm:ss <ファシリティ.プライオリティ> ホスト名 メッセージ
####具体例
Jan 24 03:29:06 <local6.err> hostname : ERROR: Application down
#環境
- Eclipse IDE for Enterprise Java Developers.
Version: 2019-12 (4.14.0)
- OS windows8(64bit)
- JavaSE 1.8
- Springbootフレームワーク
開発は上記Windows環境で実施していますが、最終的にはwarにしてLinuxで動かします。
#作成したJavaソース
/src/main/java/com/example/demo/test.java
JAVA
1import org.apache.log4j.Logger; 2public class test { 3 public static void main(String[] args) { 4 Logger logger = Logger.getLogger(test.class.getName()); 5 // ログ出力 6 logger.error("ERROR: Application down"); 7 }
src/main/java/com/example/demo/log4j.xml
log4jxml
1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 3<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 4 5 <appender name="syslog" class="org.apache.log4j.net.SyslogAppender"> 6 <param name="syslogHost" value="localhost"/> 7 <param name="facility" value="local6"/> 8 <param name="FacilityPrinting" value="true"/> 9 10 <layout class="org.apache.log4j.PatternLayout"> 11 <param name="conversionPattern" value="%d{MM dd HH:mm:ss} <%p\>"/> 12 </layout> 13 </appender> 14 <root> 15 <priority value ="error"/> 16 <appender-ref ref="syslog"/> 17 </root> 18</log4j:configuration>
#実行結果
2020-02-14 21:24:54 ERROR test ERROR: Application down
そもそもxmlが読み込まれていないと思い「src/main/resources/log4j.xml」にも配置してみたのですが、意味がありませんでした。
##2020/02/17追記
logbackxml
1 2<?xml version="1.0" encoding="UTF-8"?> 3<configuration> 4 5 <!-- for debug --> 6 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 7 <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> 8 <layout class="com.example.demo.AppLog" /> 9 </encoder> 10 </appender> 11 12 <!-- log file --> 13 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 14 <file>C:\Users\Desktop\messages.log</file> 15 <append>true</append> 16 <layout class="com.example.demo.AppLog" /> 17 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 18 19 <!-- daily rollover --> 20 <fileNamePattern>${LOG_DIR}/messages.%d{yyyy-MM-dd}.log</fileNamePattern> 21 22 <!-- keep 90 days' worth of history --> 23 <maxHistory>90</maxHistory> 24 </rollingPolicy> 25 </appender> 26 27 28<!-- syslog ←この設定が入ると、SUDOUTとFILEがINFOレベルでも出力されなくなる --> 29 <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> 30 <syslogHost>localhost</syslogHost> 31 <facility>local6</facility> 32 <suffixPattern>[%thread] %logger %msg</suffixPattern> 33 </appender> 34 35 <root level="DEBUG"> 36 <appender-ref ref="STDOUT" /> 37 <appender-ref ref="FILE" /> 38</root> 39 40 <root level="ERROR"> 41 <appender-ref ref="SYSLOG" /> 42</root> 43 44</configuration>
回答1件
あなたの回答
tips
プレビュー