2017-12-09 4 views
1

私はVertXで作業しています。Log4Jを自分のコードとexternalライブラリ用のロガーとして使いたいと思います。 VertXとLog4jがコンフィギュレーションを取得できない

は、だから私は、コードのこの作品書いた:

import org.apache.log4j.Logger; 

public class Main extends AbstractVerticle { 

    final static Logger logger = Logger.getLogger("Gimli"); 

    @Override 
    public void start(Future<Void> fut) throws Exception { 
     System.setProperty("vertx.logger-delegate-factory-class-name", " io.vertx.core.logging.Log4j2LogDelegateFactory"); // Default logger 

    logger.debug("Debug log"); 
    logger.error("Error log"); 
    logger.warn("Warning log"); 
    } 
} 

を、私はのsrc /メイン/リソースファイルのlog4j.xmlに入れ

<?xml version="1.0" encoding="UTF-8" ?> 
<Configuration> 
    <Appenders> 
    <RollingFile name="app_file" append="true" fileName="/var/log/seachlog.log" filePattern="/var/log/vertx/$${date:yyyy-MM}/seachlog-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" /> 
     <Policies> 
      <OnStartupTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy size="5MB" /> 
      <TimeBasedTriggeringPolicy /> 
     </Policies> 
    </RollingFile> 
    <RollingFile name="vertx_file" append="true" fileName="/var/log/vertx.log" filePattern="/var/log/vertx/$${date:yyyy-MM}/vertx-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - %m%n" /> 
     <Policies> 
      <OnStartupTriggeringPolicy /> 
      <SizeBasedTriggeringPolicy size="5MB" /> 
      <TimeBasedTriggeringPolicy /> 
     </Policies> 
    </RollingFile> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <!-- <LogStashJSONLayout/> --> 
     <PatternLayout pattern="%d{ISO8601} %-5p %c:%L - sfsdfsdfsdfsdf %m%n" /> 
    </Console> 
</Appenders> 

<Loggers> 
    <Logger name="Gimli" level="DEBUG"> 
     <!-- <AppenderRef ref="vertx_rollingFile" /> --> 
     <!-- <AppenderRef ref="vertx_socket" /> --> 
     <AppenderRef ref="STDOUT"/> 
     <AppenderRef ref="vertx_file" /> 
    </Logger> 
    <Root level="DEBUG"> 
     <!-- <AppenderRef ref="vertx_socket" /> --> 
     <AppenderRef ref="STDOUT"/> 
     <AppenderRef ref="app_file" /> 
    </Root> 
</Loggers> 

しかし、出力は変化していないようです:

2017-12-09 09:21:34,503 DEBUG [vert.x-eventloop-thread-0] [Gimli] Debug log (Main.java:31) 
2017-12-09 09:21:34,505 ERROR [vert.x-eventloop-thread-0] [Gimli] Error log (Main.java:32) 
2017-12-09 09:21:34,507 WARN [vert.x-eventloop-thread-0] [Gimli] Warning log (Main.java:33) 

どのように設定ファイルを正しく設定できますか?

答えて

3

まず、log4jlog4j2設定ファイルを組み合わせているようです。それがあなたの設定がロードされていない理由です。

しかし、私はvert.xのロギング機能を使用することをお勧めします - あなたはlog4jまたはlog4j2を使用することもできます。あなたはロガーを次のように定義します:

import io.vertx.core.logging.Logger; 
import io.vertx.core.logging.LoggerFactory; 

Logger logger = LoggerFactory.getLogger("Gimli"); 

このようにして、これを正常に使用します。 so:

logger.debug("Debug log"); 
logger.error("Error log"); 
logger.warn("Warning log"); 

次に、設定をsrc/main/resourcesに保存します。これはlog4j2設定なので慎重にしてください。したがって、名前はlog4j2.xmlとする必要があります。
これで、vertexにlogger delegate factoryを指定するだけで済みます。 log4jのためかlog4j2その:

io.vertx.core.logging.Log4jLogDelegateFactory 

または

io.vertx.core.logging.Log4j2LogDelegateFactory 

セットアップシステムプロパティ vertx.logger-delegate-factory-class-nameか、このようにVM引数を指定することができますすることができます

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4j2LogDelegateFactory 

(log4j2用)

を詳細情報documentation

0

最後に私は解決しました、主な問題はmavenの設定にありました。私は

<build> 
    <resources> 
     <resource> 
     <directory>/</directory> 
     <includes> 
      <include>config.json</include> 
     </includes> 
     </resource> 
    </resources> 
</build> 

この方法の達人が/にリソースフォルダを検討するとしませ/src/main/resourcesので、log4jのはlog4j.propertiesファイルを見つけることができない私のビルドスクリプトに以下の行を追加

関連する問題