我正在使用Discovery的第一个bootstrap功能和Consul作为Discovery Server,Config Server的URL位于启动期间,我能够获得application.properties.我还需要logback-spring.xml从Config服务器获取配置,我不知道如何.
我应该在logging.config={???}logback-spring.xml属性中指定什么不将URL硬编码到Config Server?
在Consul集成之前,我使用根据Serving Plain文本文档形成的url和属性中的硬编码配置服务器URL,它工作正常,但现在我们想避免这种情况.
从我调试的内容来看,在重新初始化日志系统期间没有使用Discovery客户端PropertySourceBootstrapConfiguration.
logback spring-boot spring-cloud-config spring-cloud-consul spring-logback
我有一个logback.xml文件,它配置了如何在我的 Spring Boot 应用程序中完成日志记录。我想把它改成一个.properties文件。但我找不到任何文档。
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
<property name="LOG_FILE" value="${user.home}/my_logs/logs"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %c:%L - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILE-AUDIT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<file>${LOG_FILE}-debug.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %c:%L - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover weekly -->
<fileNamePattern>${LOG_FILE}-debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>7</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="FILE-ERROR"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<file>${LOG_FILE}-error.log</file>
<encoder …Run Code Online (Sandbox Code Playgroud) 我希望能够将一些由 logstash logback 编码器生成的字段包装在另一个字段中。这可以通过 logback-spring.xml 中的 XML 配置来完成,还是我必须实现一些类然后在配置中引用它?
我尝试阅读有关实现 Factory 和 Decorator 方法的文章,但它似乎并没有让我获得任何帮助。
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/Users/name/dev/test.log
</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>/Users/name/dev/log/test.%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"component":"webserver","datacenter":"ord"}
</customFields>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
某些日志时我得到的当前 JSON 是:
{
"@timestamp": "2019-07-18T18:12:49.431-07:00",
"@version": "1",
"message": "Application shutdown requested.",
"logger_name": "org.springframework.boot.admin.SpringApplicationAdminMXBeanRegistrar$SpringApplicationAdmin",
"thread_name": "RMI TCP Connection(2)-127.0.0.1",
"level": "INFO",
"level_value": 20000,
"component": "webserver",
"datacenter": "ord"
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:
{
"@timestamp": "2019-07-18T18:12:49.431-07:00",
"@version": "1",
"component": "webserver",
"datacenter": "ord",
"data": {
"message": "Application shutdown requested.",
"logger_name": "org.springframework.boot.admin.SpringApplicationAdminMXBeanRegistrar$SpringApplicationAdmin",
"thread_name": …Run Code Online (Sandbox Code Playgroud) json logback logstash logstash-logback-encoder spring-logback
这是我的简化 logback-spring.xml 配置:
<configuration>
<!-- appender config -->
<springProfile name=dev>
<!-- dev specific config here -->
</springProfile>
<springProfile name=prod>
<!-- prod specific config here -->
</springProfile>
<!-- other profiles -->
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我使用不同的配置文件运行我的应用程序时,我想获得一些默认的日志配置。我找不到有关在logback-spring.xml.
请注意,定义了 2 个以上的配置文件,并且我不知道其他临时配置文件的名称。
谢谢,帕夫洛
我与工作春季启动在那里我使用的应用程序的logback为测井目的,我想我的日志存储与日志文件大小不受限制,但默认大小logging.file.max大小的属性是10MB谁能帮助我,什么价值我需要在logging.file.max-size上设置以实现日志文件的无限文件大小吗?
我正在编写一个用于日志记录的自定义 Spring Boot 启动项目。我的 logback-spring.xml 变大了,想把 appender 放在单独的文件(console-appender.xml 和 file-appender.xml)中,并想包含在 logback-spring.xml 文件中,如下所示。我将所有三个 xml 放在我的自定义启动项目的 src/main/resources 文件夹中。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty scope="context" name="JSONLOGSENABLED" source="spring.logs.json.enabled" defaultValue="true" />
<springProperty scope="context" name="JSONLOGSAPPENDER" source="spring.logs.json.appender" defaultValue="console" />
<if condition='property("JSONLOGSENABLED").equalsIgnoreCase("true")'>
<then>
<include file="{path to file}/console-appender.xml"/>
<include file="{path to file}/file-appender.xml"/>
<root level="INFO">
<if condition='property("JSONLOGSAPPENDER").equalsIgnoreCase("file")'>
<then>
<appender-ref ref="FILEJSON" />
</then>
<else>
<appender-ref ref="CONSOLEJSON" />
</else>
</if>
</root>
</then>
</if>
<logger
name="org.springframework.web.filter.CommonsRequestLoggingFilter">
<level value="DEBUG" />
</logger>
</configuration>
Run Code Online (Sandbox Code Playgroud)
文件appender.xml
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<!-- set immediateFlush to false for …Run Code Online (Sandbox Code Playgroud) 我使用 SpringBoot 2.1 和 来spring-boot-maven-plugin自动git-commit-id-plugin使用构建信息填充执行器信息端点。效果很好。我将值分组在 json 属性build和git.
现在我还想将这些信息包含在 json 格式的日志消息中(使用 logback logstash)。因此我尝试使用springProperty扩展,但似乎这些元素不能用作环境条目。
<springProperty scope="context" name="info_version" source="info.build.version"/>
<springProperty scope="context" name="build_version" source="build.version"/>
Run Code Online (Sandbox Code Playgroud)
我这两种情况都没有得到解决。build-info.properties我还尝试通过手动添加作为属性源
@PropertySource("classpath:META-INF/build-info.properties")
Run Code Online (Sandbox Code Playgroud)
...但这似乎也不起作用。
因此,如何在日志消息中包含信息条目中的构建版本、git-commit 或其他内容等属性?
当使用 Spring Boot文档中的 logback 配置时,将其放入logback-spring.xml控制台中会打印以下内容:
CONSOLE_LOG_PATTERN_IS_UNDEFINED CONSOLE_LOG_PATTERN_IS_UNDEFINEDCONSOLE_LOG_PATTERN_IS_UNDEFINEDCONSOLE_LOG_PATTERN_IS_UNDEFINEDCONSOLE_LOG_PATTERN_IS_UNDEFINEDCONSOLE_LOG_PATTERN_IS_UNDEFINED....
Run Code Online (Sandbox Code Playgroud)
这就是记录 1 个日志条目时打印的全部内容。所以想象一下那条很长的线。logback配置是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/default.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)
因此,阅读有关此内容的各种内容后,我尝试添加一个<springProperty...forCONSOLE_LOG_PATTERN链接到spring.console.pattern. 那行不通。这就是我认为default.xml应该做的。
那么为什么这个建议的配置不起作用呢?
我开发了一个 Spring Batch 项目,其中包括多个作业。
我的目的是将这些作业的日志写入单独的文件中。例如,当Job#1启动时,所有事件都将记录到job_1.log中,当Job#2启动时,其事件将记录到job_2.log中,依此类推。
在我的工作配置中,我使用了:
private static final Logger logger = LoggerFactory.getLogger(Job1.class);
Run Code Online (Sandbox Code Playgroud)
我还尝试按照此链接的指示配置 logback.xml 。但是,我不知道如何将MDC放入Spring Batch(MDC .put("logFileName", "Job1");
使用 Spring Batch 时有更好的方法解决我的问题吗?
我的 logback-spring.xml 从 application.properties 读取良好,但从 application.yml 读取不正常。在我的项目中,我们被要求仅使用 YAML 格式,因为同一项目中的其他微服务正在使用此格式,因此我无法添加属性文件。请帮助我为什么我的 application.yml 没有在 logback.xml 中读取
我尝试了多种方法并在 stackoverflow 上搜索了类似的问题,但没有问题有正确的答案**。请不要将此标记为重复**。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<property resource ="application.yml"/>
<property name="LOGS" value="./logs" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${spring.application.name}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender> …Run Code Online (Sandbox Code Playgroud) spring-logback ×10
logback ×8
spring-boot ×7
java ×1
json ×1
logging ×1
logstash ×1
spring ×1
spring-batch ×1