我正在使用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 ..
关于此的任何想法或建议?
答案 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写入指定目录。名称可以是精确位置或相对于当前目录。
设置其中一个日志记录属性后,将写入文件。
答案 2 :(得分:1)
我想在2020年作一个简短的更新:
logging.file
和logging.path
现在已被弃用 :
相反,我建议在您的 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容器中?
它可以让您将所有内容放在容器内并轻松分发。