使用logstash-logback-encoder进行日志记录不起作用

时间:2014-07-10 13:09:00

标签: java servlets logging logback logstash

我在使用logback与logstash-logback-encoder时遇到了问题。

我的logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>info</level>
    </filter>
    <file>logs/development.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logs/development.log.%d{yyyy-MM-dd}</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
  </appender>
  <root level="all">
    <appender-ref ref="stash" />
  </root>
</configuration>

我尝试在项目主页中创建日志/开发:

enter image description here

由于某种原因,它不会写入日志文件。

我试图添加:

input {
  file {
    path => "logs/development.log"
    codec => "json"
  }
}

但我不知道在我的项目中将其添加到何处,以便logStash能够识别它。

如果删除文件“logback.xml”,则日志记录有效,因此日志记录实际发生,但它不存储在文件中。

1 个答案:

答案 0 :(得分:0)

logback很不可能记录到src/main/resources/logs/development.log您应该尝试查看是否在项目的其他位置创建了另一个development.log文件(例如,在目标中,或者如果您运行将项目转换为另一个环境,如服务器tomcat,查找部署目录)

确认哪个文件实际获取日志后,您可以尝试配置logstash,您必须将其作为单独的程序运行。因此,logstash的配置在您的项目中无处发生。或者也许你可以在一个单独的项目中运行它,但它有点奇怪。我个人总是直接从命令行运行它。

希望这有帮助

相关问题