当前位置: 首页 > 知识库问答 >
问题:

java-logback和Spring Boot-只写控制台而不是文件

公羊绪
2023-03-14

我在一个Spring Boot应用程序中使用Logback。我在logback.xml中有配置。我试图为应用程序中的不同进程编写单独的日志文件。

<!-- Each can be broken off into its own appender. -->
<logger name="reportsLogger" level="info"
        additivity="false">
    <appender-ref ref="REPORTS_APPENDER" />
</logger>
<root level="ERROR">
    <appender-ref ref="GATEWAY_APPENDER" />
</root>
<appender name="REPORTS_APPENDER"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${DEV_HOME}/reports.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} - %msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${DEV_HOME}/archived/reports.%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>
<property name="DEV_HOME" value="c:/app-logs" />
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    static Logger logger = LoggerFactory.getLogger("reportsLogger");

    public static void main(String[] args) {
        logger.info("*** REPORTING SERVICE STARTED ***");
        SpringApplication.run(Application.class, args);
    }
}

无论如何,当我试图记录它总是写入控制台的文件时,它不会向文件本身写入任何内容。如果我尝试检查记录器实例本身(在转换为日志记录程序实例之后):

LoggerContext loggerContext = logger.getLoggerContext();
URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext);

它向我展示了记录器的上下文是根记录器本身,并且没有附加到它的文件(因此是控制台编写)我需要对配置进行哪些更改才能将信息写入文件而不是控制台?

共有1个答案

柴默
2023-03-14

解决方案分为两部分。首先,在main方法()中,日志记录需要在应用程序启动后进行d:

SpringApplication.run(Application.class, args);
logger.info("*** REPORTING SERVICE STARTED ***");

其次,Logger需要是ch.qos.logback.classic.Logger的实例,而不是org.slf4j.Logger:

static Logger logger = (Logger) LoggerFactory.getLogger("reportsLogger");
 类似资料:
  • 问题内容: 我可以配置为将日志写在文件上,而不是在控制台上打印吗? 问题答案: 2013年更新- 围绕Node v0.2和v0.4编写;现在,围绕日志记录有更好的工具。我强烈推荐温斯顿 2013年末更新- 我们仍然使用winston,但现在有了记录器库,用于围绕自定义对象的记录和格式来包装功能。这是我们logger.js的示例 https://gist.github.com/rtgibbons/7

  • 问题内容: 我从互联网上找到了下面的代码,可以正常工作,但是它没有将打印控制台写入omt.txt,它仅在第二个catch块之后写入语句。如果您运行该代码,则将理解我的意思。要做的就是将控制台上的所有内容写入“ omt.txt”文件中。 经过一番回答后,我发现我的问题不清楚,对此感到抱歉。我想将控制台输出保存到omt.txt文本文件。如果在控制台上打印了“ Hello 123”,它也应该在omt.t

  • 本文向大家介绍springboot使用Logback把日志输出到控制台或输出到文件,包括了springboot使用Logback把日志输出到控制台或输出到文件的使用技巧和注意事项,需要的朋友参考一下 一:日志: 1、配置日志级别 日志记录器(Logger)的行为是分等级的。如下表所示: 分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 默认情况下,spring boot

  • 我试图通过使用命令“java postfix 错误: 请在java.util.scanner.throwfor(未知源) 在java.util.scanner.next(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.sca

  • 问题内容: 我刚安装了termcolor为 Windows上的Python2.7。当我试图打印彩色文本时,我得到了颜色代码 相反。 结果如下: 在Far Manager上,当我尝试运行脚本时 独立的应用程序。 问题答案: 要使termcolor中使用的ANSI颜色与windows终端配合使用, 您还需要导入/init ;

  • 问题内容: 我是Firebase的新手,我的Java应用程序尝试使用客户端的Firebase令牌发送通知/消息时,遇到了错误,例如发送者ID不匹配和HTTP状态为401的身份验证错误。请注意,使用Firebase控制台,我可以将消息发送到客户端。 对于客户端应用程序,我执行了以下操作: 从此处克隆了Firebase 快速入门应用程序-https : //github.com/firebase/qu