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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
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

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"
  }
}









 
Slf4j与Log4j区别 前言 在开发过程中使用日志库打印信息是必不可少,我之前在开发学习的过程中使用的多数是Log4j,而现在大多数程序员使用的都是Slf4j,于是就研究了一下两者的区别。 一、区别介绍 Log4j 全称为Log for java,Slf4j 全称是simple log facade for java。两者最本质的区别可以简单描述为: Log4j 可以看成是一个完整的日志库,可以通过Log4j的配置文件灵活配置日志的记录格式、记录级别、输出格式等,而不需要修改已有的日志记录代码。 Slf4j 则是日志库的一个统 阅读详情

相关推荐

为什么要使用SLF4J而不是Log4J

每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4jlogback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候去在你项目中学习使用SLF4J了。 在这篇文章中,我们将学习为什么使用SLF4J

wakeUpJava 1481

springboot统一日志处理

springboot统一日志处理 统一日志处理能够获取控制台中打印出来的日志,将其存储在log文件中,log文件拆分成三个文件:1、info;2、warn;3、error。这样子拆分能够有利我们能够快速排查问题。 1、配置logback日志 删除application.properties中的日志配置 安装idea彩色日志插件:grep-console resources 中创建 logback-spring.xml <?xml version="1.0" encoding="UTF-8"?>

黑马Jack的博客 727

Slf4j、log4jlogback介绍

Slf4j、log4jlogback介绍 简介 下图来源于slf4j官网,从图中来看,可以得到如下信息: slf4j是接口; log4jlogback、java.util.logging、slf4j-simple、slf4j-nop是slf4j接口的一种的实现; 从图片的第三行观察可以发现(通过图表的颜色进行区分): logback、slf4j-simple、slf4j-nop直接原生实现了slf4j的接口; log4j、java.util.logging没有直接实现slf4j接口,所以需要的适配类

sun%moon 2845

日志common-logself4j、log4jlogbacklogstash

1. log的历史 log4j --其他日志 后来log4j--->logback (与log4j同一作者,性能得到提高,配置更灵活) | V common-log统一接口,自动扫描实现类,有缺点,在独立进程中的类扫描不到 | V sef4j接口 2.如何打印日志log.info("运行错误{}",e.getMessage()); log...

lgcjava的专栏 261

日志收集工具对比

日志收集服务

FeelTouch Labs 1422

spring项目logback日志logstashElasticsearch整合

原创/朱季谦 最近在做一个将分布式系统的日志数据通过logstash传到kafka的功能,做完之后决定业余搭一个ELK日志分析系统,将logstash采集到的日志传给Elasticsearch。经过一番捣鼓,也把这个过程给走通了,于是写了这篇总结,可按照以下步骤搭建logstash采集spring日志数据并传输给Elasticsearch。 首先,logstash是一个开...

weixin_38166726的博客 1147

4.3.3.1) 日志模块CommonLog引入说明

引入说明1. 腾讯Bugly:异常上报1.1 官网 腾讯Bugly 腾讯Bugly,为移动开发者提供专业的异常上报,运营统计内测分发解决方案,帮助开发者快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈 异常上报 内测分发 应用升级 & 热更新 应用统计 [异常上报: Bugly Android SDK 使用指南] (https://bugly.qq.com/docs/user-gui

JAVA成长之路 1050

使用logstash结合logback收集微服务日志

因为公司开发环境没有装elk,所以每次查看各个微服务的日志只能使用如下命令 这样子访问日志是并不方便,于是想为每个微服务的日志都用logstash收集到一个文件out中,那以后只要输出这个文件则可查看所有的日志 结合logbacklogstash收集日志 1.为需要收集日志的微服务引入logstash-logback-encode依赖 //用logstash收集logback...

weixin_30300225的博客 948

slf4j与log4j区别

slf4j是通用的接口规范,log4j是具体实现的日志插件,slf4j也可以搭配其他实现的jar包一起使用。

api0912的博客 1481

统一日志管理方案:Spring项目logback日志logstashElasticsearch整合

providers:json格式提供者,对json进行一个定制化设置,比如,timestamp,message,thread_name等,其他的自定义的字段的值可以通过MDC设置进来,格式就是%date{xx},配置好,就可以先启动进行监听了,启动命令:先cd进到存放logstash.conf的目录下,我的目录在bin里,所以进入的是bin目录,执行:logstash -f logstash.conf。可以根据项目需求来选择合适的版本,经过测试,以上的1.2.3版本是可以符合要求的。

朱季谦 3278

logstashlogback集成

上篇介绍了springcloud与ELK的集成,其中logstash相当于是Elasticsearch与Kibana连接的桥梁工具,今天来实现logstashlogback的集成,实现日志信息直接通过logstash发送到ES 1.安装logstash 还是在bin目录下新建一个conf文件夹再新建一个log-es.conf配置文件 配置信息如下: input { tcp { m...

weixin_43960336的博客 7261

log4j,self4j

1、第三方jar包中如果把日志打印到log4jself4j中,则我们必须配置log4j,否则看不到他们的打印日志(如果有些错误他们之间打印了,并没有拋异常)。 2、需要引入log4j-1.2.xx.jar、slf4j-api-x.x.x.jar、以及slf4j-log4j12-x.x.x.jar,后两个包由slf4j提供,包名中的x表示版本号。 3、log4j启动时,默认会寻找source

ggaofengg的专栏 1609

最通俗易懂的 JAVA slf4j,log4j,log4j2,logback 关系与区别以及完整集成案例

slf4j 于log4j,log4j2,logback 是什么关系,有何区别 slf4j不是一个真正意义的可用应用程序,他是一个接口层 log4j2 日志框架完整集成例子 > 就像java 的接口性质一样,单纯集成了slf4j 的话,执行比如log.info log.debug等方法,只能在控制台打印日志,并不会在持久化到文件,或者其他自定义介质上,slf4j至少需要一个实现层框架,比如log4jlogbacklogback 日志框架完整集成例子

峡谷电光马仔的博客 6511

logstash + logback实现分布式日志采集

logstash + logback实现分布式日志采集

一恍过去 1万+

java common log使用,log4jcommons.logging日志记录的使用方法

#re: log4jcommons.logging日志记录的使用方法2008-03-11 14:08芦苇一 最好与commons-logging一起用,why?1.标准接口,即使将来脱离了log4j也一样用2.简化了编码,减少耦合度:不需在代码中指定log4j配制文件位置,代码中不需要引用log4j的包3.基本所有框架都是这么用的。。。。。。(我相信群众)附加提供一下commons-loggi...

weixin_42517607的博客 827

Log4self4j整合使用

之前项目开发过程中,遇到线上问题时运维找不到具体的日志文件,然后把锅丢给了开发组,对于开发来说,日志是自己记录的,所以找起来容易,但对于运维却很困难,于是开始反思是不是我们的日志打得太low了,在网上看了许多的博文,发现这篇博文java日志框架log4j详细配置及与slf4j联合使用教程 写得很不错,于是做了借鉴总结。 日志在系统开发的过程中扮演着不可替代的角色,对于开发人员来说,好的日志处理...

shuduti的博客 2054

self4j log4j配置与调用

slf4j-api定义了日志的接口,可以使用不同的日志类实现接口,此处以log4j 为例: 引入slf4j-api,slf4j-log4j12 jar包 org.slf4j slf4j-api 1.7.25 org.slf4j slf4j-log4j12 1.7.25 test 添加log4j.propertie

3541

slf4jlog4j区别

slf4jlog4j区别 作为开发人员,想必我们都非常熟悉日志的重要性,但是我们却非常容易忽略日志的相关问题。平时我们使用最多的日志框架应该就是log4jlogbacklog4j2。这些日志框架都是出自一个人之手: Ceki Gülcü。这些日志框架都很好用,并且也很完善,但是太依赖日志框架的jar包,当我们想换一种日志框架时,你就不得不去修改代码。 那么这个时候slf4j就孕育而生,slf4j(Simple Logging Facade for Java),java简易日志门面。是一套包装日志

weixin_46529122的博客 5771
上一篇: 日志从common-log、self4j、log4j到logback、logstash
下一篇: 使用easyPR调用openCV动态库,实现java版的中文车牌识别
李国才
博客等级 码龄14年 73粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值