日志转换成json格式

apache_access.log
将LogFormat 原配置行注释。添加如下内容:
LogLevel warn
<IfModule log_config_module>
LogFormat "{ \
\"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\", \
\"@version\": \"1\", \
\"tags\":[\"apache\"], \
\"message\": \"%h %l %u %t \\\"%r\\\" %>s %b\", \
\"clientip\": \"%a\", \
\"duration\": %D, \
\"status\": %>s, \
\"request\": \"%U%q\", \
\"urlpath\": \"%U\", \
\"urlquery\": \"%q\", \
\"bytes\": %B, \
\"method\": \"%m\", \
\"site\": \"%{Host}i\", \
\"referer\": \"%{Referer}i\", \
\"useragent\": \"%{User-agent}i\" \
}" ls_apache_json
<IfModule logio_module>
CustomLog logs/access_log.ls_json ls_apache_json
重启apache程序
---------------------------------------------------------------------------------------------------
nginx_access.log
将log_format 原配置行注释,添加如下内容:
log_format logstash_json '{ "@timestamp": "$time_local", '
'"@fields": { '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" } }';
access_log /usr/local/nginx/logs/access_json.log logstash_json;
重启nginx程序
---------------------------------------------------------------------------------------------------
Tomcat 利用log4j,日志输出格式为json
进入到Tomcat的lib目录:
cd /usr/local/tomcat8.5.14/lib
进入到Tomcat的bin目录:
cd /usr/local/tomcat8.5.14/bin
mv tomcat-juli.jar tomcat-juli.jar.bak
进入到Tomcat的conf目录:
mv logging.properties  logging.properties.bak
编辑 context.xml,将Context标题修改为如下内容:
<Context swallowOutput="true">
进入到tomcat的lib目录:
创建log4j.properties,其catalina日志为滚动日志,json格式输出
vim log4j.properties
log4j.rootLogger = INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern={"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n
log4j.appender.CATALINA.MaxFileSize=2MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
  INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
  INFO, HOST-MANAGER
重启Tomcat,并检查日志输出格式:
tail -f usr/log/tomcat8.5.14/logs/catalina
日志输出到catalina,而非catalina.out文件。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flume是一个分布式,可靠和高可用的日志收集和聚合系统。它的一个功能是拦截器,可以在Flume的数据流中添加、删除、修改和过滤事件。在Flume中,事件是通过数据流传输的,事件可以是文本、二进制数据或JSON格式的数据。 JSON格式是一种轻量级的数据交换格式,广泛用于Web应用程序和API之间的数据交换。在Flume中,JSON格式可以作为事件的一种格式。因此,Flume提供了一个JSON格式的拦截器,可以用于拦截和处理JSON格式的数据。 Flume的JSON格式拦截器可以用于以下目的: 1. 解析JSON格式的数据并将其转换为Flume事件。 2. 提取JSON格式数据中的字段,并将其添加到Flume事件的头部或正文中。 3. 过滤JSON格式数据,根据条件过滤掉不需要的数据。 下面是一个使用Flume的JSON格式拦截器的示例: ``` # 定义数据源和目的地 agent.sources = source1 agent.sinks = sink1 agent.channels = channel1 # 定义数据源配置 agent.sources.source1.type = avro agent.sources.source1.bind = 0.0.0.0 agent.sources.source1.port = 41414 # 定义拦截器 agent.sources.source1.interceptors = json_interceptor agent.sources.source1.interceptors.json_interceptor.type = org.apache.flume.interceptor.JSONInterceptor$Builder # 定义目的地配置 agent.sinks.sink1.type = logger # 定义通道配置 agent.channels.channel1.type = memory agent.channels.channel1.capacity = 1000 agent.channels.channel1.transactionCapacity = 100 # 绑定数据源、拦截器、目的地和通道 agent.sources.source1.channels = channel1 agent.sinks.sink1.channel = channel1 ``` 在上面的示例中,我们定义了一个数据源,使用Avro协议接收数据。然后,我们定义了一个JSON格式的拦截器,用于解析和处理JSON格式的数据。最后,我们定义了一个目的地,将Flume事件记录到日志中。在绑定数据源、拦截器、目的地和通道后,Flume就可以开始接收和处理JSON格式的数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值