简体   繁体   中英

springboot + eureka + log4j2 empty log file

I followed the tutorial here Spring Eureka Tutorial to create a basic Eureka registry jar application. The next step was to change the logging to log4j2 so I can have a rolling file using the guide found here Spring log4j2 guide .

The problem I have is when I run the application, I have no errors thrown but

  1. the eureka server logs are still outputted to the console
  2. The custom log output file "eureka.log" is created but it is empty.
  3. Any custom logs that I write eg logger.info("Starting Eureka Registry server..."); does not show up anywhere, not in the log file nor the console logs. They are just swallowed somewhere in memory.

So somehow, spring is picking up my log4j2 properties file, but its still using the default inbuilt logging for the eureka server and ignoring others.

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

In the end, I get an empty eureka.log file and a console log output looks this

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: 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

I suspect I may be missing something and I've been looking at other solutions but after 2 days with no luck I figure its best to ask for help. Any suggestions or tips are welcome.

In application.properties , you can specify your:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM