java - springboot + eureka + log4j2 空日志文件

标签 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..."); 不会显示在任何地方,不会显示在日志文件或控制台日志中。它们只是被吞噬在内存的某个地方。

不知何故,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

我怀疑我可能遗漏了一些东西,我一直在寻找其他解决方案,但两天后没有运气,我认为最好寻求帮助。欢迎任何建议或提示。

最佳答案

application.properties 中,您可以指定:

  • 日志记录路径
  • 日志记录文件
  • 日志记录级别

关于java - springboot + eureka + log4j2 空日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619470/

相关文章:

java - itext Pdf 表格单元格中的居中文本

java - 从另一个类访问列表

java - 到 "null"或不到 "null"我类(class)的属性

Spring bean 没有注入(inject)到 CXF Web 服务中,为什么?

java - EntityManagerFactory 已关闭

java - 如何让我的编译插件覆盖maven插件?

java - "Close unrelated projects"函数在 Eclipse 中消失

java - 无法找到所需类型的 Bean 中的字段 请考虑在配置中定义该类型的 Bean

maven - 如何将 Maven 项目添加为 Gradle 依赖项?

java - 如何在我的 SWT 应用程序上使用 IBM 的小部件 (com.ibm.rcp.swt.swidgets)?