JsonLayout log4j2 json格式输出日志
如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式。
前提需要Jackson的包,保证项目中包含jackson的依赖
然后在log4j2.xml中在需要日志输出的地方,添加
- <JsonLayout/>
例如需要在控制台输出格式为Json格式则:
- <!--这个输出控制台的配置-->
- <Console name="Console" target="SYSTEM_OUT">
- <JsonLayout/>
- </Console>
如果需要在日志文件输出,则为:
- <RollingFile name="syswareLog" fileName="${LOG_HOME}/logs/sysware.log"
- filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/sysware-%d{yyyy-MM-dd}-%i.log">
- <JsonLayout/>
- <Policies>
- <TimeBasedTriggeringPolicy/>
- <SizeBasedTriggeringPolicy size="100000 kb"/>
- </Policies>
- <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
- <DefaultRolloverStrategy max="100"/>
- </RollingFile>
设置完成之后,日志输出格式如下:
- {
- "timeMillis" : 1547108632526,
- "thread" : "main",
- "level" : "WARN",
- "loggerName" : "com.ctrip.framework.apollo.internals.DefaultMetaServerProvider",
- "message" : "Could not find meta server address, because it is not available in neither (1) JVM system property 'apollo.meta', (2) OS env variable 'APOLLO_META' (3) property 'apollo.meta' from server.properties nor (4) property 'apollo.meta' from app.properties",
- "endOfBatch" : false,
- "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
- "threadId" : 1,
- "threadPriority" : 5
- }
但是这个日志是格式化后的json,有同事提出需求,想让一个json对象输出为一行,这样日志读取的时候,可以以一个对象为单位读取,而不是一行。
继续查看JsonLayout 源码,既然他提供了转换为json,那是不是也可以提供格式化json规则。
org.apache.logging.log4j.core.layout.JsonLayout 。 继承自 AbstractJacksonLayout,在AbstractJacksonLayout 中有下面几个属性介绍。我们下面主要介绍这几个属性的含义及使用方法。
- protected final String eventEol;
- protected final ObjectWriter objectWriter;
- protected final boolean compact;
- protected final boolean complete;
- compact 设置是否紧凑输出,默认是false,如果设置为true,则不是用行位和缩进,大概意思是说,输出把所有的日志输出为一行。
原文( If "true", does not use end-of-lines and indentation, defaults to "false".)
- complete 设置是否完成,默认是false, 如果设置为true,则在日志开始和结束会包含页眉和页脚,和逗号。
原文(If "true", includes the JSON header and footer, and comma between records.)
- eventEol 如果为“true”,则在每个日志事件后强制执行EOL(即使compact是“true”),默认是false,即使在紧凑模式下,也会生效,大概意思就是说,
即使是在紧凑模式下,如果evetEol设置为true ,也会在每个log event(log.info().log.error(),log.debug()等等)之后强制换行输出。
objectWriter 暂不清楚- 通过上面的属性介绍,根据需要,只需将compact ,evetEol 设置成true,即可将每行日志输出成一行json。
JsonLayout log4j2 json格式输出日志的更多相关文章
- 【转载】JsonLayout log4j2 json格式输出日志
JsonLayout log4j2 json格式输出日志 如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. ...
- Windows 系统下json 格式的日志文件发送到elasticsearch
Windows 系统下json 格式的日志文件发送到elasticsearch配置 Nxlog-->logstash-->ElasticSearch Logstash https://ww ...
- Golang:将日志以Json格式输出到Kafka
在上一篇文章中我实现了一个支持Debug.Info.Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手.有兴趣的可以通过这个链接前往:https://github.com/ ...
- elk-nginx输出json格式的日志
把Nginx日志的格式输出成JSON格式展示在Kibana面板,生产环境中基本都是这么使用. 1, 配置nginx 主要修改nginx的访问日志格式,这里定义成json格式,以便后面logstash更 ...
- ELK之nginx日志使用json格式输出
json Nginx默认日志输出格式为文本非json格式,修改配置文件即可输出json格式便于收集以及绘图 修改nginx配置文件添加配置,增加一个json输出格式的日志格式 log_format a ...
- springboot集成log4j2 + logstash 异步输出日志
一. spring boot 集成log4j2 1.maven引入jar包 <dependency> <groupId>org.springframework.boot< ...
- 使用json格式输出
/** * json输出 * * @param unknown_type $info */ public function json_out ($info) { header('Content-typ ...
- python 把数据 json格式输出
有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u ...
- Beats:使用 Filebeat 导入 JSON 格式的日志文件
转载自:https://blog.csdn.net/UbuntuTouch/article/details/108504014 在今天的文章中,我来用另外的一种方式来展示如何导入一个 JSON 格式的 ...
随机推荐
- HBase 笔记2
Hadoop 服务启动顺序: zookeeper ->journalnode->namenode -> zkfc -> datanode HBase Master WEB控制台 ...
- C语言进阶之路(一)----C语言的内存四区模型
内存四区模型:操作系统给C/C++编写的程序分配内存,通常将分配的内存划分为以下四个区域:1.栈区:存放局部变量,用完由操作系统自动释放2.堆区:动态分配给程序的内存区域,由程序员手动释放3.数据区: ...
- Java的反射机制的详细应用
package com.at221; import java.io.Serializable; import java.lang.reflect.*; import org.junit.Test; p ...
- 【转】学习Robot Framework必须掌握的库—-BuiltIn库
作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库.如果用户想在测试用例中实现比较复杂的 ...
- guest project <web接口开发与自动化测试>
一次写接口,简单记录一下... 参照虫师大大的书写的,有做小的修改... github上guest项目地址:git@github.com:lixiaofeng1993/guest.git web ap ...
- Linux系统命令 3
1.vmstat命令监控系统资源[root@localhost ~]#vmstat [刷新延时 刷新次数] 例如:[root@localhost proc]#vmstat 1 3 2.dmesg开机时 ...
- C++反射实现(转)
参考了wxWidgets的相关代码,并进行简化,同时借鉴了网上的相关内容,改进之处在于,只需要继承基本类Object,在类的头文件中定义宏,DECLARE_CLASS(类名),在类的实现文件中定义宏, ...
- Python入门 io篇
简单demo with open('d:/pydemo/pythonStart/fun1.py', 'r') as f: #print(f.read()) while True: line = f.r ...
- jQuery validator plugin之Selector
原文 :unchecked Selector Selects all elements that are unchecked. jQuery( ":unchecked" ) Inv ...
- SAP SD-销售模式-寄售(客户寄售)
SAP SD-销售模式-寄售(客户寄售) http://blog.sina.com.cn/s/blog_a440b7ee01014kgq.html http://www.doc88.com/p-23 ...