Spring启动日志记录

时间:2016-08-05 06:42:22

标签: java spring logging service spring-boot

我正在使用Spring启动来构建一个简单的REST服务,我想知道最合适的方法来处理日志记录。

在我的 application.properties 文件中,我有以下内容:

logging.level.org.springframework.web: DEBUG

在开发应用程序时,我只是这样运行:

java -jar myapp.war

因此,我在stdout中获得了所有好的日志消息。但是,我打算部署它,我想知道什么是最适合部署应用程序的方法,但仍然有我的日志。

当然,人们可以简单地重定向输出

java -jar myapp.war >> somefile

但这不是很优雅,我想部署我的应用程序,以便它可以很容易地用作服务:

ln -s /my/app/xyz.war /etc/init.d/xyz

然后,做

service xyz start|stop|restrart

管理它。似乎这样做可以防止我重定向stdout ..

关于此的任何想法或建议?

5 个答案:

答案 0 :(得分:3)

你真正追求的是Spring Boot file logging output功能。

引用上述文件:

  

默认情况下,Spring Boot只会登录到控制台而不会   写日志文件。如果你想写除日志文件   控制台输出需要设置logging.file或logging.path属性   (例如在你的application.properties中)。

基本上添加application.properties

logging.file=name.of.my.log.file.log
logging.path=/path/where/above/log/file/gets/stored

答案 1 :(得分:2)

在application.properties文件中,您可以为logging.file设置两个属性。

与文档说明类似:(26.3 File output

  

默认情况下,Spring Boot只会登录到控制台而不会   写日志文件。如果你想写除日志文件   您需要设置控制台输出...

  • logging.file

      

    写入指定的日志文件。名称可以是精确位置或相对于当前目录。

  • logging.path

      

    将spring.log写入指定目录。名称可以是精确位置或相对于当前目录。

设置其中一个日志记录属性后,将写入文件。

Here you can find the complete doc

答案 2 :(得分:1)

我想在2020年作一个简短的更新


logging.filelogging.path现在已被弃用

Screenshot of application.properties showing that logging.file and logging.path are deprecated


相反,我建议在您的 logging.file.name 中使用 application.properties (也可以使用logging.file.path)。

示例:logging.file.name=./logdir/spring.log

答案 3 :(得分:0)

Spring Boot支持您可以方便使用的几乎所有日志记录框架,但是我建议您使用 slf4j 日志记录框架并使用 logback.xml ,这很容易看

1)创建LOGGER对象,将这行代码添加到您的类中

private static final Logger LOGGER = LoggerFactory.getLogger(YourClassName.class);

2)在/ resource文件夹中创建logback.xml文件,并复制以下代码

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MMM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/app.log</File> <!-- LOCATION of FILE WHERE YOU WANT TO SAVE -->
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

使用 logback.xml 配置,您可以在Spring Boot中自定义应用程序日志

答案 4 :(得分:-4)

为什么不将它包装在docker容器中?

它可以让您将所有内容放在容器内并轻松分发。