質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Apache log4j

Apache log4jは、Javaのログユーティリティです。Apache Software Foundationの元で開発されており、Apache Software Liense 2としてライセンスが与えられています。

Q&A

解決済

1回答

4006閲覧

JavaでLog4jを使ってSyslogにログ出力したい

fishStory

総合スコア10

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Apache log4j

Apache log4jは、Javaのログユーティリティです。Apache Software Foundationの元で開発されており、Apache Software Liense 2としてライセンスが与えられています。

0グッド

0クリップ

投稿2020/02/14 12:46

編集2020/02/17 10:30

##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} &lt;%p\&gt;"/> 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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/02/14 17:36

様々な要素が絡んでいるので必ずしも初心者さんの質問とは思いませんが、例えば「java log4j syslog xml」などと検索すると関連ページがいくつもヒットします。それらをご覧の上でのご質問でしょうか。
退会済みユーザー

退会済みユーザー

2020/02/16 13:56

標準なら logback であって log4j じゃないですけど
fishStory

2020/02/17 04:32

dodox86様 回答ありがとうございます。Googleで一通り調べて上記のxmlを作成したものの、反映されないため質問させていただきました。
fishStory

2020/02/17 04:39 編集

asahina1979様 logback で通常のログは出力できているのですが、syslogの設定の仕方を検索しても見つけることができませんでした。そのため、log4jであればSpringbootでも使用でき、回答いただける方も多いかと思い質問しました。 Logback Syslogで検索したところそれらしいものが以下しか見つからなかったのですが、もしよい参考サイトをご存知であれば教えていただけるでしょうか。 https://www.itdaan.com/tw/ee390e85bd34
dodox86

2020/02/17 04:54

質問が覆ってしまいすが、asahina1979さんご指摘のように、今現在の標準を使った方が良いでしょうね。 LOGBack - 第4章 アペンダー のSyslogAppenderをご覧ください。 http://logback.qos.ch/manual/appenders_ja.html
退会済みユーザー

退会済みユーザー

2020/02/17 05:53

ちなみに、クラスが log4j~であっても標準はブリッジされています。
fishStory

2020/02/17 10:38 編集

dodox86様、asahina1979様 教えていただいたサイトを参考に、Lockbackでログ設定をしました。 appenderはテスト用のSTDOUTと本番用のFILE、シスログ用のSYSLOGを作成しました。 作成したxmlは上記に追記しています。 SYSLOGがなければSTDOUTとFILEは正常に動くのですが、SYSLOGの設定を記載するとコンソールとファイルには何も表示されなくなります。 SYSLOGも動いているかわからず、eclipseのコンソールに何も記載されなくなります。 目標としては、debug,info,warnning,errorはアプリログとしてFILEの設定に表示され、error時に任意でSyslogにメッセージを表示したいです。 追記したlogback.xmlをどのように変更すればよいでしょうか。
guest

回答1

0

ベストアンサー

rootは一つのみ可能です。

http://logback.qos.ch/manual/filters_ja.html#levelFilter

http://logback.qos.ch/manual/filters_ja.html#thresholdFilter

を利用してエラー以上を指定してください。

投稿2020/02/17 10:37

編集2020/02/17 10:40
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fishStory

2020/02/19 06:19

教えていただいた資料を参考に、目的のログを出すことができました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問