任何人都知道SLF4J 通常如何实现结构化日志记录?
是否有任何开源已经可以处理这个问题?
如何限制Logback的电子邮件率SMTPAppender,以便每n分钟最多给我发一次电子邮件?
我根据Logback appender设置了我的日志记录,但我不太明白它是如何配置或子类化来实现的.
有隐藏的功能吗?有人开发了一个子类来处理这个问题吗?
我们正在从log4j迁移到几个Web应用程序的logback.在关闭我们的应用程序时,我们目前致电:
org.apache.log4j.LogManager.shutdown();
Run Code Online (Sandbox Code Playgroud)
应该刷新所有异步日志记录并关闭所有外部资源(文件,套接字).
在logback中是否存在类似的东西,或者在关闭时是否以某种方式自动刷新?
麦克风
我是否可以仅使用logback.xml覆盖特定类的日志记录级别?即一切都保留在INFO中,除了一个将登录DEBUG的类.
我在默认值之后附加了这个,但似乎不起作用
<logger name="com.pack1.pack2.paack3.ClassName" additivity="false" level="debug">
<appender-ref ref="file1"/>
</logger>
Run Code Online (Sandbox Code Playgroud)
谢谢,唐纳德
在我们的spring-boot项目中,我们使用slf4j进行日志记录.以下是我们在application.properties文件中添加的配置
logging.file=/opt/logs/my_log.log
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO
logging.level.nl.yestelecom.boss=DEBUG
logging.level.com.github.isrsal.logging.LoggingFilter=DEBUG
Run Code Online (Sandbox Code Playgroud)
它只生成7个备份文件(my_log.log.1,my_log.log.2 ...,my_log.log.7),每个文件的大小为10.5MB,之后根本不会发生日志记录.
有没有办法改变这种行为?
我们查看了spring-boot的可用属性,但没有找到任何东西.任何建议表示赞赏.
我正在使用logback进行日志记录,但它一直在工作; 前几天我开始收到警告
log4j:WARN没有为logger找到appender(org.apache.axis.i18n.ProjectResourceBundle).log4j:WARN请正确初始化log4j系统.
我没有使用log4j,也没有使用过这个项目.我的资源文件夹中有一个logback.xml.
关于为什么这个警告开始显现的任何想法?
我在JAX-RS应用程序中使用带有Logback的SLF4J ...我想以这样的方式登录到JSON,即我的消息不再被编码,而是原始打印到日志文件中:
目前它看起来像这样:
{"@timestamp":1363834123012,"@message":"{\"text\":\"From MLK to Barack
Ob...\n\"}"
Run Code Online (Sandbox Code Playgroud)
但我希望有这个:
{"@timestamp":1363834123012,"@message": { "text ": "From MLK to Barack
Ob...\n\}
Run Code Online (Sandbox Code Playgroud)
原因是我想再次解析JSON并希望避免数据的转义.
我写了一个自定义的logback编码器,但我发现无法避免转义.我可以传递一个对象进行回溯并根据对象的类型更改设置吗?
编辑:我找到了一种方式 - 不完全优雅 - 按照SSCE的要求:
在我的申请中
// SLF4J Logger
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
// A logback? Marker
private Marker foo = MarkerFactory.getMarker("foo");
// Jackson ObjectMapper()
ObjectMapper mapper = new ObjectMapper();
// Log something...
logger.info(foo, mapper.writeValueAsString(json));
Run Code Online (Sandbox Code Playgroud)
我在这里使用了Logstash-Encoder的变体:https://github.com/logstash/logstash-logback-encoder
package my.package;
import static org.apache.commons.io.IOUtils.*;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import org.codehaus.jackson.JsonGenerator.Feature;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode; …Run Code Online (Sandbox Code Playgroud) 我配置logback.xml它完美但logback-access.xml不起作用.
在maven pom.xml
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在 src/main/resource
logback.xml
logback-access.xml
Run Code Online (Sandbox Code Playgroud)
有没有办法配置访问日志?
我有一个简单的spring-boot应用程序打包为.war文件,可以部署到外部Tomcat容器.我在类路径(/ WEB-INF/classes)中有一个logback.xml(下面),但是,当部署到Tomcat时,日志不会写入该文件.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
Run Code Online (Sandbox Code Playgroud) 当我停止运行我的spring-boot应用程序时,产生了两个日志文件而不是一个(一个是预期的).
我的Logback-test.xml文件中可能导致此错误的是什么?
的logback-的test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<timestamp key="myTimestamp" datePattern="yyyy-MM-dd'_'HH-mm-ss.SSS"/>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="INFO"/>
<!-- Send debug messages to System.out -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>C:\path\to\my\file\myLog-${myTimestamp}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} - %msg%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<FileNamePattern>myLog.%i{yyyy-MM-dd_HH:mm:ss.SSS}}.log</FileNamePattern>
<MinIndex>1</MinIndex>
<MaxIndex>10</MaxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>2MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="com.my.package" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" /> …Run Code Online (Sandbox Code Playgroud) logback ×10
java ×7
logging ×7
slf4j ×4
spring-boot ×4
spring ×3
access-log ×1
debugging ×1
json ×1
log4j ×1
smtpappender ×1
tomcat ×1
war ×1