日志从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"
}
}
common-log 立即下载

相关推荐

logback+self4j 进行日志记录

关于logback-test.xml配置详解,包括简单项目demo解压运行

日志总结---common-logself4j、log4jlogbacklogstash

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

fengbin2005的专栏 1466

4.3.3.1) 日志模块CommonLog引入说明

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

JAVA成长之路 1050

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

为什么要使用SLF4J而不是Log4J

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

wakeUpJava 1481

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

Log4j/common log和各种服务器集成的问题

Log4j/common log和各种服务器集成的问题   目前的很多商业和非商业的服务器中间件都默认集成了common-log甚至是log4j.因此当我门把我们的应用发布在上面的时候,都会遇到关于log方面的问题.  1.webshpere下面集成log4j.  "WebSphere的类装入器方式有两种方式:PARENT_FIRST和PARENT_LAST。默认值是PARENT_FIRST,

生活 830

Log4self4j整合使用

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

shuduti的博客 2054

java common log使用,Java使用Log日志系统(common-logging和log4j

配置common-logging.properties文件只需要一行即可,放在classpath下,如果是Maven中就在src/resources下org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger11配置log4j.properties文件放在classpath下,如果是Maven中就在src/r...

weixin_39669133的博客 479

apache common log & apache log4j

common log可以理解成适配(俺模式不是很好,文档上写的是wrapper),做这个适配器的目的是能够使用已有的工业标准log系统。common log实现的SimpleLog写的很简单的,就是用system.out/system.err往出输出。SimpleLog并不是一个工业标准的log,那要common log做什么呢?刚说过啦,做适配吗,只是提供了一个简单的默认实现——SimpleLo

活着 1249

java common log使用,Commons-logging + Log4j 使用方法及常见问题

System.out.println()就会无能为力了.关于Commons-loggin + Log4j结合的使用方法网上文章较多,也比较简单,我这里后面有附摘录的认为写得较好的文章下面列出我在应用中碰到的问题问题1:commons-logging.properties文件中有设定org.apache.commons.logging.Log=org.apache.commons.logging.i...

weixin_30873127的博客 1566

slf4j log4j logback之间的关系,哪个更好些

slf4j、log4j、还有logback到底有什么关系,用哪个比较好,那就让我们一起来看一看

Butingnal的专栏 7493

Java使用Log日志系统(common-logging和log4j

使用common-logging和log4j准备开一大项目的话,日志系统必不可少。Apache为了让众多的日志工具有一个相同操作方式,实现了一个通用日志工具包:commons-logging。而Log4j基本上是Java平台上最好的日志组件了。使用ommons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构(如Log4j)。现在,Apache通用日志工具c

geekun的博客 1万+

Slf4j和Log4j的区别

原文地址:http://blog.csdn.net/lifuxiangcaohui/article/details/7278595 log4j 大家都知道,就不在多说了,重点说说slf4j; 简单日记门面(simple logging Facade for Java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希 望的l

杨春建的博客 2万+

Java—log4jcommons-logging,slf4j的关系

前面有一篇日志中简单的介绍了 log4j,同时也介绍了它与commons-logging的关系,但是突然冒出来一个slf4j,并且slf4j有取代commons-logging的趋势,所以,我们可以推知slf4j与commons-logging的作用应该 相差不大的。 好,下面开始先讲讲slf4j。 1.slf4j  他只提供一个核心slf4j api(就是slf4j-api.j

victorai60的专栏 795

java日志组件介绍(common-logging,log4j,slf4j,logback

common-logging common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-

yycdaizi的专栏 4万+
上一篇: 邮件发送失败?WireShark帮你找原因
下一篇: 日志总结---从common-log、self4j、log4j到logback、logstash
李国才
博客等级 码龄14年 73粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值