springboot + eureka + log4j2空日志文件

时间:2017-06-18 20:57:15

标签: java spring maven log4j2 netflix-eureka

我按照这里的教程Spring Eureka Tutorial创建了一个基本的Eureka注册表jar应用程序。下一步是将日志记录更改为log4j2,以便我可以使用此处Spring log4j2 guide中的指南创建滚动文件。

我遇到的问题是当我运行应用程序时,我没有抛出任何错误,但是

  1. eureka服务器日志仍然输出到控制台
  2. 自定义日志输出文件" eureka.log"已创建,但它是空的。
  3. 我写的任何自定义日志(例如logger.info("Starting Eureka Registry server...");)都不会显示在任何地方,不会显示在日志文件中,也不会显示在控制台日志中。他们只是被记忆中的某个地方吞没了。
  4. 所以不知何故,spring正在拿起我的log4j2属性文件,但它仍然使用eureka服务器的默认内置日志记录而忽略其他服务器。

    Main.java

    @EnableEurekaServer
    @SpringBootApplication
    public class Main {
    
    public static void main(String[] args) {
        Logger logger = LogManager.getLogger(Main.class.getSimpleName());
        logger.info("Starting Eureka Registry server..."); //Log message disappears
        logger.info("Starting Eureka Registry server..."); //Log message disappears
        logger.info("Starting Eureka Registry server..."); //Log message disappears
        logger.info("Starting Eureka Registry server..."); //Log message disappears
        SpringApplication.run(Main.class, args);     
     }
    }
    

    的pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</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-log4j2</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    log4j2.properties

    status = error
    name = PropertiesConfig
    property.filename = logs
    
    filters = threshold
    
    filter.threshold.type = ThresholdFilter
    filter.threshold.level = info
    
    appenders = rolling
    appender.rolling.type = RollingFile
    appender.rolling.name = RollingFile
    appender.rolling.fileName = ${filename}/eureka.log
    appender.rolling.filePattern = eureka-%d{MM-dd-yy-HH-mm-ss}-%i.log
    appender.rolling.layout.type = PatternLayout
    appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} [%t] - %m%n
    appender.rolling.policies.type = Policies
    appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
    appender.rolling.policies.time.interval = 1
    appender.rolling.policies.time.modulate = true
    appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
    appender.rolling.policies.size.size=10MB
    appender.rolling.strategy.type = DefaultRolloverStrategy
    appender.rolling.strategy.max = 20
    
    loggers = rolling
    
    #Make sure to change the package structure as per your application
    logger.rolling.name = com.lab.servers
    logger.rolling.level = debug
    logger.rolling.additivity = false
    logger.rolling.appenderRef.rolling.ref = RollingFile
    

    最后,我得到一个空的eureka.log文件,控制台日志输出看起来是

      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v1.5.2.RELEASE)
    
    2017-06-18 16:25:48.349  INFO 2601 --- [           main] c.g.c.s.Main                             : No active profile set, falling back to default profiles: default
    2017-06-18 16:25:48.362  INFO 2601 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2783717b: startup date [Sun Jun 18 16:25:48 EDT 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@5a56cdac
    2017-06-18 16:25:48.812  WARN 2601 --- [           main] o.s.c.a.ConfigurationClassPostProcessor  : Cannot enhance @Configuration bean definition 'refreshScope' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
    2017-06-18 16:25:48.953  INFO 2601 --- [           main] o.s.c.c.s.GenericScope                   : BeanFactory id=7bcf4003-cc89-31c0-9a0e-e63326839222
    2017-06-18 16:25:48.966  INFO 2601 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
    2017-06-18 16:25:49.039  INFO 2601 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$25365eb7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2017-06-18 16:25:49.197  INFO 2601 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8761 (http)
    .
    .
    .
    2017-06-18 16:25:51.733  INFO 2601 --- [      Thread-11] o.s.c.n.e.s.EurekaServerBootstrap        : isAws returned false
    2017-06-18 16:25:51.734  INFO 2601 --- [      Thread-11] o.s.c.n.e.s.EurekaServerBootstrap        : Initialized server context
    2017-06-18 16:25:51.734  INFO 2601 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Got 1 instances from neighboring DS node
    2017-06-18 16:25:51.734  INFO 2601 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Renew threshold is: 1
    2017-06-18 16:25:51.734  INFO 2601 --- [      Thread-11] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
    2017-06-18 16:25:51.739  INFO 2601 --- [      Thread-11] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
    2017-06-18 16:25:51.792  INFO 2601 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http)
    2017-06-18 16:25:51.793  INFO 2601 --- [           main] c.n.e.EurekaDiscoveryClientConfiguration : Updating port to 8761
    2017-06-18 16:25:51.795  INFO 2601 --- [           main] c.g.c.s.Main                             : Started Main in 4.286 seconds (JVM running for 4.924)
    2017-06-18 16:25:56.788  INFO 2601 --- [      Thread-13] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2783717b: startup date [Sun Jun 18 16:25:48 EDT 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@5a56cdac
    2017-06-18 16:25:56.790  INFO 2601 --- [      Thread-13] c.n.e.EurekaDiscoveryClientConfiguration : Unregistering application CiveMicroserviceRegistry with eureka with status DOWN
    2017-06-18 16:25:56.791  INFO 2601 --- [      Thread-13] c.n.d.DiscoveryClient                    : Shutting down DiscoveryClient ...
    2017-06-18 16:25:56.791  INFO 2601 --- [      Thread-13] c.n.d.DiscoveryClient                    : Completed shut down of DiscoveryClient
    

    我怀疑我可能会遗漏某些东西并且我一直在寻找其他解决方案但是在没有运气的2天之后我会尽力寻求帮助。欢迎任何建议或提示。

1 个答案:

答案 0 :(得分:0)

application.properties中,您可以指定:

  • logging.path
  • logging.file
  • logging.level