标签: logback

Logback-test.xml配置生成两个日志文件而不是一个?

当我停止运行我的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)

java logging spring logback spring-boot

14
推荐指数
1
解决办法
3483
查看次数

Logback Java 中带有模式的 JSON 布局

我正在使用 logback 登录我的 Spring Boot 应用程序并使用以下模式:

"%d [%thread] %-5p [%c] [%F:%L] [trace=%X{X-B3-TraceId:-},span=%X{X-B3-SpanId:-}]  - %msg%n"
Run Code Online (Sandbox Code Playgroud)

现在我想将日志移至 JSON 布局。但我没有找到一种方法将该模式应用到我的日志中,因此上述许多信息都丢失了。

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
                <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId>
                <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
                    <prettyPrint>true</prettyPrint>
                </jsonFormatter>
            </layout>
    </appender>
Run Code Online (Sandbox Code Playgroud)

有什么替代方法可以达到同样的效果吗?

java logback logback-classic

14
推荐指数
1
解决办法
2万
查看次数

带 Logback 的 SLF4J:NoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder

我正在尝试特别使用 SLF4J 和 Logback 来实现 RollingFile Logger,但我遇到了一个无法解决的异常。这里是:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:293)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:76)
    at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:53)
    at java.util.ArrayList.forEach(ArrayList.java:1259)
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
    at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:53)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1313)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302)
    at com.upnetix.java.simeonyachev.PlexUserNameApplication.main(PlexUserNameApplication.java:13)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 17 more
Run Code Online (Sandbox Code Playgroud)

那是我的 pom.xml :

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.4</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--SPRING BOOT-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
<!--            <exclusions>-->
<!-- …
Run Code Online (Sandbox Code Playgroud)

java noclassdeffounderror logback slf4j spring-logback

14
推荐指数
1
解决办法
2万
查看次数

Logback教程

我在哪里可以找到Logback教程和/或示例项目?与" Log4j Tutorial " 类似的东西会很不错.

注意:我知道官方Logback网站上提供的文档

Logback手册

Logback文档

但还有什么可用吗?

documentation log4j logback slf4j

13
推荐指数
2
解决办法
1万
查看次数

SLF4J和Logback的依赖管理

我想开始使用SLF4J和Logback.我阅读了Logback的在线文档,现在我准备将JAR添加到我的仓库并试用了.

但我不知所措!我需要什么JAR?我下载了最新的SLF4J(1.7.5),预计会看到类似的东西slf4j-logback.jar,但是看不到任何类似的东西.我已经读过Logback包含SLF4J的"本机实现",但是不知道这究竟是什么意思,或者它是否暗示我甚至不需要slf4j-api-1.7.5.jar在类路径上.

所以我问:要使用最新的Logback(1.0.13),我需要哪些JAR?我看了Maven central repo for logback 1.0.13并且没有看到任何列出的依赖项,所以这根本没有帮助我.提前致谢!

java logging logback slf4j dependency-management

13
推荐指数
1
解决办法
1万
查看次数

玩框架logback自定义布局

我正在尝试使用自定义布局类来进行play framework 2.0 logback日志记录.

首先,我在包utils中定义了一个自定义布局类:

package utils;

public class MonitorLayoutForLogback extends LayoutBase<ILoggingEvent> {
...
}
Run Code Online (Sandbox Code Playgroud)

在我的conf/logging.xml文件中,我把:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="utils.MonitorLayoutForLogback">
                             <param name="programName" value="uowVisualizer" />
                             <param name="serviceGroup" value="shared" />
                             <param name="serviceIdentifier" value="uowVisualizer" />
            </layout>
        </encoder>
    </appender>
Run Code Online (Sandbox Code Playgroud)

但是当我在比赛中跑步时,例如,

play run
Run Code Online (Sandbox Code Playgroud)

我知道了:

14:20:18,387 |-ERROR in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Could not create component [layout] of type [utils.MonitorLayoutForLogback] java.lang.ClassNotFoundException: utils.M
onitorLayoutForLogback
    at java.lang.ClassNotFoundException: utils.MonitorLayoutForLogback
    at      at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at      at java.security.AccessController.doPrivileged(Native Method)
    at      at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at      at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at      at java.lang.ClassLoader.loadClass(ClassLoader.java:356) …
Run Code Online (Sandbox Code Playgroud)

logback playframework

13
推荐指数
1
解决办法
795
查看次数

如何重定向AWS sdk日志记录输出

即使我正在使用logback并对其进行配置,我也会继续使用STDOUT.我无法将AWS内容从控制台中取出.

Jun 19, 2014 3:46:40 PM com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Unable to execute HTTP request: The target server failed to respond
org.apache.http.NoHttpResponseException: The target server failed to respond
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:95)
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62)
        at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
        at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
        at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)  
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)   
        at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
        at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doReceiveResponse(SdkHttpRequestExecutor.java:66)
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
        at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:713)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:518)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:402)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:245)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3573)
        at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:990)
        at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:970)
        at com.here.prime.cdtfilter.S3MapStore$$anonfun$1.apply(S3MapStore.scala:49)
        at com.here.prime.cdtfilter.S3MapStore$$anonfun$1.apply(S3MapStore.scala:48)
        at com.here.prime.utils.Utils$.retry(Utils.scala:26)
Run Code Online (Sandbox Code Playgroud)

这是我的logback配置:

<configuration debug="false" scan="true" scanPeriod="30 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} …
Run Code Online (Sandbox Code Playgroud)

java logging scala logback amazon-web-services

13
推荐指数
1
解决办法
6206
查看次数

使用logback屏蔽日志中的敏感数据

我需要能够搜索事件中的任何一个模式,并用模板值替换模式中的文本.这是我们的应用程序中的一项功能,旨在防止敏感信息落入日志.由于信息可能来自各种各样的来源,因此在所有输入上应用过滤器是不切实际的.除了日志记录之外还有toString()的用法,我不希望toString()统一屏蔽所有调用(仅记录日志).

我尝试在logback.xml中使用%replace方法:

<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'f k\="pin">(.*?)&lt;/f','f k\="pin">**********&lt;/f'}%n</pattern>
Run Code Online (Sandbox Code Playgroud)

这是成功的(在用字符实体替换尖括号后),但它只能替换单个模式.我也想表现相当于

<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'pin=(.*?),','pin=**********,'}%n</pattern>
Run Code Online (Sandbox Code Playgroud)

同时,但不能.无法在一个%替换中屏蔽两个模式.

已经在interblags被松散讨论的另一种方法是延长的附加器/编码器/布局层次的东西,但每次试图拦截ILoggingEvent导致整个系统的崩溃,通常是通过实例化的错误或抛出UnsupportedOperationException.

例如,我尝试扩展PatternLayout:

@Component("maskingPatternLayout")
public class MaskingPatternLayout extends PatternLayout {

    @Autowired
    private Environment env;

    @Override
    public String doLayout(ILoggingEvent event) {
        String message=super.doLayout(event);

        String patternsProperty = env.getProperty("bowdleriser.patterns");

        if( patternsProperty != null ) {
            String[] patterns = patternsProperty.split("|");
            for (int i = 0; i < patterns.length; i++ ) {
                Pattern pattern = Pattern.compile(patterns[i]);
                Matcher matcher = pattern.matcher(event.getMessage());
                matcher.replaceAll("*");
            }
        } else {
            System.out.println("Bowdleriser not cleaning! …
Run Code Online (Sandbox Code Playgroud)

logback data-masking

13
推荐指数
2
解决办法
2万
查看次数

如何在spring-boot中为ANSI颜色功能配置logback?

我有一个在Windows上运行的spring-boot应用程序.我在我的项目中添加了jansi(v1.8)依赖项,用于在Windows上启用彩色终端输出.

包含了spring-boot中提供的logback配置,即在logback.xml中添加了以下行.

<include resource="org/springframework/boot/logging/logback/base.xml" />
Run Code Online (Sandbox Code Playgroud)

我不清楚在logback.xml中配置什么,以便它的日志语句按照spring-boot提供的base.xml进行着色.对不起,如果是一个非常愚蠢的问题,我是一个新手回归.

谢谢 !

logback spring-boot

13
推荐指数
2
解决办法
1万
查看次数

在ERROR级别日志事件上使Logback抛出异常

运行单元测试时,我想在记录ERROR级别消息的任何测试中失败.使用SLF4J/Logback实现此目的的最简单方法是什么?我想避免编写自己的ILoggerFactory实现.

我尝试编写自定义Appender,但我不能通过调用Appender的代码传播异常,Appender的所有异常都会被捕获.

unit-testing logback slf4j

13
推荐指数
1
解决办法
986
查看次数