2017-06-06 17 views
1

Ubuntuでログを実行するための簡単なプロジェクトを書いてあります。これはexampleです。EDITLogBack Syslogが機能しないjava

ApplicationStarter

package com.javacodegeeks.examples.logbacksyslogexample; 

import com.javacodegeeks.examples.logbacksyslogexample.message.IMessageTransmitter; 
import com.javacodegeeks.examples.logbacksyslogexample.message.kiwi.KiwiMessageTransmitterImpl; 
import com.javacodegeeks.examples.logbacksyslogexample.message.rsyslog.RsyslogMessageTransmitterImpl; 

public class ApplicationStarter { 

    /** 
    * Main method 
    */ 
    public static void main(final String[] args) { 

     final IMessageTransmitter kiwiMessageTransmitter = new KiwiMessageTransmitterImpl(); 
     kiwiMessageTransmitter.send("I am learning to send message to Syslog server"); 

     final IMessageTransmitter rsyslogMessageTransmitter = new RsyslogMessageTransmitterImpl(); 
     rsyslogMessageTransmitter.send("Logback can easily send message to Syslog server"); 
    } 
} 

KiwiMessageTransmitterImpl

package com.javacodegeeks.examples.logbacksyslogexample.message.kiwi; 

import com.javacodegeeks.examples.logbacksyslogexample.message.IMessageTransmitter; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class KiwiMessageTransmitterImpl implements IMessageTransmitter { 

    private static final Logger LOGGER = LoggerFactory.getLogger(KiwiMessageTransmitterImpl.class); 

    @Override 
    public void send(final String message) { 
     LOGGER.info("Hello! My message is : {}", message); 
    } 
} 

RsyslogMessageTransmitterImpl

package com.javacodegeeks.examples.logbacksyslogexample.message.rsyslog; 

import com.javacodegeeks.examples.logbacksyslogexample.message.IMessageTransmitter; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class RsyslogMessageTransmitterImpl implements IMessageTransmitter { 

    private static final Logger LOGGER = LoggerFactory.getLogger(RsyslogMessageTransmitterImpl.class); 

    @Override 
    public void send(final String message) { 
     LOGGER.info("Hello! My message is : {}", message); 
    } 
} 

IMessageTransmitter

package com.javacodegeeks.examples.logbacksyslogexample.message; 

public interface IMessageTransmitter { 

    void send(final String message); 
} 

私は自分のプロジェクトを実行すると、私は同じことを得ます! Javaの メッセージはsyslogに送信されていません!

ここではlogback.xmlです。私はresourcesフォルダに入れます。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <appender name="KIWI" class="ch.qos.logback.classic.net.SyslogAppender"> 
     <syslogHost>localhost</syslogHost> 
     <facility>LOCAL0</facility> 
     <suffixPattern>%thread: %-5level %logger{36} - %msg%n</suffixPattern> 
    </appender> 

    <appender name="RSYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> 
     <!-- Ubuntu Server host name --> 
     <syslogHost>centol</syslogHost> 
     <facility>LOCAL1</facility> 
     <suffixPattern>%thread: %-5level %logger{36} - %msg%n</suffixPattern> 
    </appender> 

    <logger name="com.javacodegeeks.examples.logbacksyslogexample.message.kiwi" level="INFO"> 
     <appender-ref ref="KIWI" /> 
    </logger> 

    <logger name="com.javacodegeeks.examples.logbacksyslogexample.message.rsyslog" level="INFO"> 
     <appender-ref ref="RSYSLOG" /> 
    </logger> 

</configuration> 

このコマンドを使用してsyslogを調べます。 syslogの出力が正しく見えました。残念ながら、メッセージはまだsyslogで受信していないNetbeans(JAVA)から送信します。

は、それが理由syslogHost施設のある

Jun 6 23:37:26 xxx whoopsie[1040]: [23:37:26] online 
Jun 6 23:37:26 xxx avahi-daemon[1023]: Registering new address record for 2001:e68:4424:afab:c31f:c843:2351:c58 on wlp6s0.*. 
Jun 6 23:37:28 xxx dhclient[19397]: XMT: Solicit on wlp6s0, interval 4340ms. 
Jun 6 23:37:32 xxx dhclient[19397]: XMT: Solicit on wlp6s0, interval 9080ms. 
Jun 6 23:37:41 xxx dhclient[19397]: XMT: Solicit on wlp6s0, interval 17540ms. 
Jun 6 23:37:59 xxx dhclient[19397]: XMT: Solicit on wlp6s0, interval 34190ms. 
Jun 6 23:38:09 xxx NetworkManager[1013]: <warn> [1496763489.9447] dhcp6 (wlp6s0): request timed out 
Jun 6 23:38:09 xxx NetworkManager[1013]: <info> [1496763489.9448] dhcp6 (wlp6s0): state changed unknown -> timeout 
Jun 6 23:38:09 xxx NetworkManager[1013]: <info> [1496763489.9456] dhcp6 (wlp6s0): canceled DHCP transaction, DHCP client pid 19397 
Jun 6 23:38:09 xxx NetworkManager[1013]: <info> [1496763489.9456] dhcp6 (wlp6s0): state changed timeout -> done 
[email protected]:/$ 

わからない(出力の小さい部分)cat /var/log/syslogを試してみてください。

+0

この記事では、 'logback.xml'で' ch.qos.logback.classic.net.SyslogAppender'を設定する必要があることを説明しています。あなたはそれをしましたか? –

+0

@HuguesMoreau何か考えですか? – Tony

+1

いいえ、私は答えをアップアップしました。 –

答えて

1

FINALLY私はそれが動作するようになる!どのような悪夢...

Syslogを設定するにはRsyslog : Output Logs to Remote Hostに従います。 rsyslog.conf

sudo vim etc/rsyslog.conf 

コメントを外して次の2行に

移動します。

module(load="imtcp") 
input(type="imtcp" port="514") 

保存して終了します。その後、サービスを再起動します。

sudo service rsyslog restart 

マジック!

関連する問題