2016-09-09 94 views
0

私はspringbootでlog4j2を使用しましたが、ログファイルは作成されましたが、ログはファイルに書き込まれません。Log4j2ファイルが作成されましたが、ログは書き込まれません。

log4j2.properties私は私が使用しているコードを言及していとりわけロガー

private static Logger logger = LogManager.getLogger(); 

    @RequestMapping(value="/check", method = RequestMethod.GET) 
    public String healthCheck() { 

     logger.debug("Health-check invoked"); 

     return "Hey, I am fine"; 
    } 

を使用して

name=PropertiesConfig 
property.filename = /export/home/apps/logs 
appenders = console, file 

appender.console.type = Console 
appender.console.name = STDOUT 
appender.console.layout.type = PatternLayout 
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

appender.file.type = File 
appender.file.name = LOGFILE 
appender.file.fileName=${filename}/app-frontend.log 
appender.file.layout.type=PatternLayout 
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

loggers=file 
logger.file.name=guru.springframework.blog.log4j2properties 
logger.file.level = debug 
logger.file.appenderRefs = file 
logger.file.appenderRef.file.ref = LOGFILE 

rootLogger.level = debug 
rootLogger.appenderRefs = stdout 
rootLogger.appenderRef.stdout.ref = STDOUT 

のpom.xml

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-log4j2</artifactId> 
     </dependency> 
    </dependencies> 

方法。まだ解決する方法を見つけることができません。ログはコンソールにも表示されません。

+0

log4j2の設定が正しくないようです。なぜ、xml(またはyaml/json)ベースの設定を使用しないのですか? ".properties"はlog4j2の全機能を活用することはできません。 –

答えて

1

spring-bootの設定に「log4j2.properties」を使用することには一定の制限があります。 Log4J 2は、最初にリリースされたときのプロパティファイルによる設定をサポートしていませんでした。それは再び追加されたプロパティファイルをサポートLog4Jの2.4からだったが、バージョン2.4のとおり

the documentationで述べた完全に異なるsyntax.Asで、Log4jのは、今のプロパティファイルを介したコンフィギュレーションをサポートしています。プロパティの構文はLog4j 1で使用されている構文と同じではないことに注意してください。

バージョン2.6では、最初の使用時に名前が推測されるため、この識別子のリストは必要なくなりましたが、それでもリストを使用する必要があることを示します。リストが存在する場合は、そのリストが使用されます。

スプリングブートリリース1.4.0以降、log4j2 apiバージョンは2.6.2です。 spring-bootはslf4j apiを使用して複数の基本的なLogging Frameworkをサポートしています。 slf4jバインディングのクラスパス依存関係をじゃまにすることなく、log4j2のプロパティベースの設定を使用するときに問題があるようです。

これを実現するためにXML(またはyaml/json)ベースの設定を使用し、log4j2が可能なすべての機能を使用できるようにすることは理にかなっています。

ここでは、同じプロパティのxmlベースの設定を示します。

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration monitorInterval="60"> 
<Properties> 
    <Property name="filename">export/home/apps/logs</Property> 
</Properties> 
<Appenders> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
    </Console> 
    <File name="LOGFILE" 
     fileName="${filename}/app-frontend.log"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
    </File> 
</Appenders> 
<Loggers> 

    <Logger name="guru.springframework.blog.log4j2properties" level="debug"> 
     <AppenderRef ref="LOGFILE" 
      level="debug" /> 
    </Logger> 
    <Root level="debug"> 
     <AppenderRef ref="STDOUT"/> 
    </Root> 
</Loggers> 

+0

あなたの答えは説明的です。ありがとうございました。:-)残念ながら、システムは私にただ1つのアップ票を与えることを可能にします。 :-) – CodeIntro

+0

うれしかったよ:) –

1

私は複数の方法で試みたが、log4j2.propertiesが動作していません。私は非常に多くの(1.4.3件まで)、スプリングブーツのバージョン& log4j2の組み合わせで試してみました結論に達した

  • Log4j2 - 2.7は正常に動作していますが、春ブートはバージョンまでlog4j2-2.7が付属していませんでした(1.4.x)。
  • springbootの組み合わせでlog4j2.propertiesに移動しないでください。
  • この組み合わせではlog4j2.ymlを使用してください。最近、xmlを使用することに関心がありません。

ここで私が達成したサンプルです。

build.gradle

依存関係{

[ 
    "org.springframework:spring-context", 
    "org.springframework.boot:spring-boot-starter-web", 
    "org.springframework.boot:spring-boot-starter-data-jpa", 
    "org.springframework.boot:spring-boot-starter-test", 
    "org.springframework:spring-context-support:4.1.6.RELEASE" 
].each { dep -> compile(dep) { 
     exclude module: "spring-boot-starter-logging" 
    } 
} 
compile("org.springframework.boot:spring-boot-starter-log4j2") 
compile ('org.apache.logging.log4j:log4j-api:2.6.2') 
compile ('org.apache.logging.log4j:log4j-core:2.6.2') 
compile ('org.apache.logging.log4j:log4j-slf4j-impl:2.6') 
compile ('org.hibernate:hibernate-entitymanager:5.2.2.Final') 
compile ('org.hibernate:hibernate-core:5.2.2.Final') 
compile ('org.hibernate:hibernate-java8:5.2.2.Final') 
compile 'mysql:mysql-connector-java:5.1.31' 
compile 'org.apache.commons:commons-lang3:3.0' 
compile 'org.freemarker:freemarker:2.3.20' 
//compile 'org.apache.velocity:velocity:1.7' 
compile 'commons-dbcp:commons-dbcp:1.4' 
compile 'javax.servlet:jstl:1.2' 
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.8.5' 
testCompile 'junit:junit:4.12' 
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper' 

}

log4j2.yml

場所src->メーン>リソース内でこのファイル

configuration: 
    name: Default 
    properties: 
    property: 
    - name: log-path 
     value: c:\\logs 
    - name: archive 
     value: ${log-path}/archive 
    appenders: 
    Console: 
     PatternLayout: 
     pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n' 
     name: Console-Appender 
     target: SYSTEM_OUT 
    File: 
     PatternLayout: 
     pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n' 
     fileName: ${log-path}/amc.log 
     name: File-Appender 
    RollingFile: 
     DefaultRolloverStrategy: 
     max: '30' 
     PatternLayout: 
     pattern: '[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n' 
     Policies: 
     SizeBasedTriggeringPolicy: 
      size: 1 KB 
     fileName: ${log-path}/rollingfile.log 
     filePattern: ${archive}/rollingfile.log.%d{yyyy-MM-dd-hh-mm}.gz 
     name: RollingFile-Appender 
    loggers: 
    logger: 
     additivity: 'false' 
     appender-ref: 
     - level: info 
     ref: Console-Appender 
     - level: info 
     ref: File-Appender 
     - level: info 
     ref: RollingFile-Appender 
     level: debug 
     name: <your package> 
    root: 
     appender-ref: 
     ref: File-Appender 
     level: info 
1

名前をlogger.file.nameに変更してください。 log4j2.xmlで

0
Logger logger = LogManager.getLogger("My_logger"); 

私たちは耳を傾け、ファイルに書き込むgetLogger("String")の名前を言う必要があります。

<Logger name ="My_logger" level="debug"> 
関連する問題