`

日志从common-log、self4j、log4j到logback、logstash

 
阅读更多
1. log的历史

log4j --其他日志  后来log4j--->logback (与log4j同一作者,性能得到提高,配置更灵活)
   |
   V
common-log统一接口,自动扫描实现类,有缺点,在独立进程中的类扫描不到
   |
   V
sef4j接口

2.如何打印日志:
log.info("运行错误{}",e.getMessage());
log.info("运行错误",e);
主要使用上述方式打印日志时,如果使用%c%L打印类名和行号时,class的名称显示的是超类的名字,L显示的当前类的行号。

3.项目的坑
core-MD居然用到了3种getLoger的方法,有common-logs的,有sellf4j的,有log4j的,所以在排查时遇到一些问题。
多种日志实现并存时,比如log4j和logback,随机得到日志实现。

由于历史原因,系统有logback、log4j两套日志,试着关闭log4j,后发现spring的日志没有啦,spring和hibernate等使用了log4j.而习题自动找到了logback的配置。另外如果在spring中没有配置logback.xml,则maven启动时使用src/test/resoureces/log_back.xml文件,发布时使用src/main/resource目录下的。

在生产机A上,由于多个项目使用了公共lib,所以日志打印总是有问题,不能上传到logstash,好像也不能生成文件。
在另外一台生产机使用独立lib时时正常。

addActivity属性:是否还是其他匹配打印日志。

      比如第一个logger设置了additivity=true,所以除了写入file_access还会写入stdout。
   
 <logger name="com.mindao.app.ea.interceptor.AccessLogInterceptor" level="info" additivity="true">        
        <appender-ref ref="file_access" />
    </logger>

    <logger name="com.mindao" level="info" additivity="false">        
        <appender-ref ref="stdout" />
    </logger>


4.log4j如何对接logstash

log4j.rootLogger=INFO,console,socket

# for package com.demo.elk, log would be sent to socket appender.
#log4j.logger.com.mindao.elk=info, socket
log4j.logger.com.mindao.elk=info, socket

# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4567
log4j.appender.socket.RemoteHost=120.76.44.235
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000

# appender console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

logstash的配置
mkdir config
vi config/log4j_to_es.conf
输入以下内容:
# For detail structure of this file# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html
input {
  # For detail config for log4j as input, # See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
  log4j {
    mode => "server"
    host => "centos2"
    port => 4567
  }
}
filter {
}
output {
  # For detail config for elasticsearch as output, # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
  elasticsearch {
    action => "index"#The operation on ES
    hosts  => "centos2:9200"#ElasticSearch host, can be array.
    index  => "applog"#The index to write data to.
  }
}

5 logback如何对接logstash
https://github.com/logstash/logstash-logback-encoder
Including it in your project

Maven style:
<dependency>
  <groupId>net.logstash.logback</groupId>
  <artifactId>logstash-logback-encoder</artifactId>
  <version>4.7</version>
</dependency>
UDP Appender


To output JSON for LoggingEvents to a syslog/UDP channel, use the LogstashSocketAppender in your logback.xml like this:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appendername="stash"class="net.logstash.logback.appender.LogstashSocketAppender">
    <host>MyAwesomeSyslogServer</host>
    <!-- port is optional (default value shown) -->
    <port>514</port>
  </appender>
  <rootlevel="all">
    <appender-refref="stash" />
  </root>
</configuration>


logstash的配置
input {
  syslog {
    codec => "json"
  }
}









分享到:
评论

相关推荐

    logback-slf4j日志配置文件-下载即可使用

    "logback-slf4j日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中...

    日志 log4j-slf4j+logback1.3.0

    6. slf4j-log4j12.jar:SLF4J到Log4j的适配器,使得SLF4J的日志请求可以被Log4j处理。 总的来说,"log4j-slf4j+logback1.3.0"的组合提供了一个强大、灵活的日志解决方案,允许开发者使用统一的API进行日志记录,...

    logstash-logback-encoder-6.1.jar

    java运行依赖jar包

    10 reasons to use logback !------log4j他爹告诉你为何要使用新的日志包logback

    9. 集成测试:logback-test.xml配置文件可以用于单元测试和集成测试,确保在开发阶段就能获取到合适的日志信息。 10. 社区活跃:作为log4j的升级版,logback有着活跃的开发者社区和持续的维护更新,确保了框架的...

    slf4j-log4j12-1.7.7.jar下载

    SLF4J(Simple Logging Facade for Java)与Log4j12的结合是Java日志处理中的一个常见组合。...然而,随着技术的发展,考虑升级到更现代的日志解决方案,如Logback或Log4j2,可能会带来更好的性能和功能。

    logstash-logback-encoder:Logback JSON编码器和附加器

    Logstash Logback编码器 提供编码器,布局和附加程序,以JSON和登录。 支持常规LoggingEvents (通过Logger )和AccessEvents (通过记录)。 最初是为了支持的JSON格式的输出而的,但现在已经演变为针对JSON和...

    slf4j-log4j12 等jar包.rar

    SLF4J提供了一个抽象层,允许开发者在运行时选择合适的日志实现,比如Log4j、Logback等。这个"slf4j-log4j12.jar"文件就是SLF4J与Log4j 1.2桥接器的实现,它使得SLF4J调用能够被Log4j 1.2的日志系统捕获并处理。 1....

    slf4j-log4j12-1.5.6.jar

    SLF4J (Simple Logging Facade for Java) 是一个用于各种日志框架的简单抽象,例如java.util.logging、Logback 和 Log4j。它的主要目的是为应用程序提供一个可插入的日志接口,允许最终用户在部署时插入所需的日志库...

    logstash-logback-encoder-4.8.jar

    java运行依赖jar包

    logback+self4j 进行日志记录

    ** 当程序运行时,SLF4J会自动查找`logback-test.xml`并应用其中的配置。通过控制台或指定的日志文件,我们可以看到按照配置输出的日志信息。 总结来说,理解并正确配置`logback-test.xml`是实现高效日志记录的关键...

    slf4j-log4j12-1.7.5.jar

    slf4j-log4j12-1.7.5.jar。

    slf4j-log4j12-1.7.2.jar 亲测可用

    SLF4J (Simple Logging Facade for Java) 是一个用于日志记录的接口层,它为各种日志框架,如Logback、Log4j、Java Util Logging等提供了一个统一的API。SLF4J的主要目的是使得应用程序可以在部署时选择任何支持的...

    slf4j-log4j12-1.5.5.jar、slf4j-log4j12-1.5.6.jar、slf4j-api-1.5.6.jar

    这两个版本都用于将SLF4J的日志请求路由到Log4j框架中,这样开发者就可以使用SLF4J简洁的API,同时享受到Log4j丰富的配置和强大的日志处理能力。 Log4j是Apache的一个开源项目,它为Java应用程序提供了灵活且强大的...

    slf4j-log4j12-1.7.12.jar、slf4j-api-1.7.12.jar

    SLF4J的主要目的是为各种日志框架,如log4j、logback等,提供一个统一的接口,使得应用程序可以独立于具体的日志实现进行开发,提高了代码的可移植性和灵活性。 标题中的"slf4j-log4j12-1.7.12.jar"是SLF4J的一个...

    logback日志写logstash配置appender参考

    logback日志写logstash配置appender参考

    slf4j-log4j12-1.6.6.jar

    SLF4J(Simple Logging Facade for Java)与Log4j12的集成包`slf4j-log4j12-1.6.6.jar`是Java开发中常用的日志处理工具,它允许开发者使用SLF4J的API,同时实现在运行时绑定到Log4j 1.2框架。这个版本的jar包包含了`...

    slf4j-api-1.6.1和slf4j-log4j12-1.6.1和log4j-1.2.16包

    这样做的好处是,开发人员可以在项目后期根据需求轻松切换日志框架,例如从Log4j切换到Logback,只需改变绑定的实现即可。 **slf4j-log4j12-1.6.1** 这个包是SLF4J的一个绑定实现,它将SLF4J API的调用桥接到Log4j ...

    log4j-1.2.17.jar、logback-core-1.1.2.jar、slf4j-simple-1.7.12.jar等

    commons-logging-1.2.jar、log4j-1.2.17.jar、logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.12.jar、slf4j-jcl-1.7.12.jar、slf4j-simple-1.7.12.jar

    logstash-logback-encoder-6.3.jar

    logstash-logback-encoder就是转码后向logstash中输入的依赖

    log4j-1.2.16.jar、slf4j-api-1.6.1.jar、slf4j-log4j12-1.6.1.jar资源包

    最后,`slf4j-log4j12-1.6.1.jar`是`SLF4J`到`log4j`的具体适配器,它允许`SLF4J`API调用被映射到`log4j`的实现上。这样,即使你的代码使用了`SLF4J`API,实际上也可以无缝地与`log4j`日志系统协同工作。`slf4j-log4...

Global site tag (gtag.js) - Google Analytics