ELK 收集 Tomcat日志以及修改Tomcat日志格式
Tomcat日志
想要收集tomcat 日志 首先我们要对tomcat的日志有足够的了解

tomca日志分类

简单的说tomcat logs下日志分为五类:
catalina 、 localhost 、 manager 、 admin 、 host-manager
tomcat 其实还有记录访问日志(localhost_access_log.txt)
 
localhost.log   程序异常没有被捕获的时候抛出的地方【常用】
catalina.log   程序的输出、tomcat的日志输出【常用】
localhost_access_log.txt  tomcat访问日志记录【常用】
manager.log   webapps/manager项目生成的日志文件
host-manager.log   webapps/host-manager项目生成的日志文件
 

tomcat日志还分有级别

SEVERE (highest value) >
WARNING >
INFO >
CONFIG >
FINE >
FINER >
FINEST (lowest value)

日志级别的修改:

修改/conf/logging.properties文件
示例:
①设置 catalina 日志的级别为: FINE
1catalina.org.apache.juli.FileHandler.level = FINE
②禁用 catalina 日志的输出:
1catalina.org.apache.juli.FileHandler.level = OFF
③输出 catalina 所有的日志消息:
1catalina.org.apache.juli.FileHandler.level = ALL
按照我们的需求,我们可以将tomcat日志分为两大类
1、catalina.log 日志记录了tomcat运行状态信息以及异常告警信息等
2、localhost_access.Y-M-D.log:访问日志主要是记录访问的时间,IP以及访问的资料等相关信息
我们要想更好的将tomcat两种日志准确的定位抓取,需要自定义tomcat日志格式
首先是locathost_access.Y-M-D.log访问日志,将日志输出定义为json格式,方便后续kibana展示

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

  

v1
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access" suffix=".log" pattern="{"client":"%h", "client user":"%l", "authenticated":"%u", "access time":"%t", "method":"%r", "status":"%s", "send bytes":"%b", "Query?string":"%q", "partner":"%{Referer}i", "Agent version":"%{User-Agent}i"}"/>
v2
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access" suffix=".log" pattern="{"client":"%h", "client user":"%l", "authenticated":"%u", "access time":"%t", "method":"%r", "status":"%s", "Request time":"%T", "send bytes":"%b", "partner":"%{Referer}i", "Agent version":"%{User-Agent}i"}"/>

 

  

参数详情:
directory:日志文件存放的位置
prefix:日志文件名称前缀
suffix:日志名称后缀
pattern:是一个json解析字段的参数
&quot;client&quot;:&quot;%h&quot;其中%h表示请求的主机名称,这里指的是请求端的IP
&quot;client user&quot;:&quot;%l&quot;其中%l记录的是刘拉着进行身份验证时提供的名称
&quot;authenticated&quot;:&quot;%u&quot; 其中%u代表获得验证的访问请求者,否则就是"-"
&quot;access time&quot;:&quot;%t&quot; 其中%t代表请求的时间
&quot;method&quot;:&quot;%r&quot; 其中%r代表请求的方法和URL
&quot;status&quot;:&quot;%s&quot; 其中%s代表HTTP的响应状态码
&quot;Request time&quot;:&quot;%T&quot;, 其中%T处理请求的时间,以秒为单位
&quot;send bytes&quot;:&quot;%b&quot; 其中%b代表发送请求的字节数,但不包括请求http头部信息
&quot;Query?string&quot;:&quot;%q&quot; 其中%q指的是查询字符串的意思
v2 日志内容展示
{"client":"221.226.190.138", "client user":"-", "authenticated":"-", "access time":"[03/Dec/2019:10:35:15 +0800]", "method":"GET /docs/appdev/ HTTP/1.1", "status":"404", "Request time":"0.005", "send bytes":"1075", "Query?string":"",  "partner":"http://122.51.9.145:8080/", "Agent version":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"}
 
 
 
%a-远程IP地址
%A-本地IP地址
%b-发送的字节,不包括HTTP标头,如果为零则为'-'
%B-发送的字节,不包括HTTP标头
%h-远程主机名(如果连接器的enableLookups为false,则为IP地址)
%H-请求协议
%l-来自identd的远程逻辑用户名(总是返回“-”)
%m-请求方法(GET,POST等)
%p-接收此请求的本地端口。另请参见下面的%{xxx} p。
%q-查询字符串(如果存在,则以“?”开头)
%r-请求的第一行(方法和请求URI)
%s-响应的HTTP状态代码
%S-用户会话ID
%t-日期和时间,以通用日志格式
%u-已验证(如果有)的远程用户,否则为'-'
%U-请求的URL路径
%v-本地服务器名称
%D-处理请求所花费的时间(以毫秒为单位)
%T-处理请求所花费的时间,以秒为单位
%F-提交响应所花费的时间(以毫秒为单位)
%I-当前请求线程名称(以后可以与堆栈跟踪进行比较)
 

ELK 收集 Tomcat日志以及修改Tomcat日志格式的更多相关文章

  1. JDK+MyEclipse+Tomcat的配置(修改Tomcat 6.x的端口)

    修改tomcat的端口,在conf目录里的server.xml文件 例如想将端口修改为8080则将port的值修改为8081,其余值不变 通过Tomcat服务器访问 想通过浏览器访问这个页面,需要在T ...

  2. 【tomcat】如何修改tomcat的默认项目

    我们知道,在Tomcat安装.配置.启动成功后在浏览器地址栏输入http://localhost:8080会访问到Tomcat的默认主页. 然后我们打开Tomcat的webapps目录时,会发现里面有 ...

  3. 【日志】修改redis日志路径

    redis默认不记录log文件,需要在Redis.conf文件,找到loglevel notice,在其后的logfile "",双引号中,写redis的路径"/redi ...

  4. Tomcat(一)Tomcat常用配置

    操作系统:win8 Jdk版本:1.7.0_51 Jdk目录:C:\Program Files\Java\jdk1.7.0_51 Tomcat版本:8.0.3 Tomcat目录:D:\Program  ...

  5. elk收集tomcat的日志

    logstash收集tomcat的日志 不要修改下tomcat中server.xml的日志格式,否则tomcat无法启动,试过多次,不行,就用自带的日志让logstash去收集 首先给tomcat日志 ...

  6. ELK收集Nginx|Tomcat日志

    1.Nginx 日志收集,先安装Nginx cd /usr/local/logstash/config/etc/,创建如下配置文件,代码如下 Nginx.conf input { file { typ ...

  7. Docker 搭建 ELK 收集并展示 tomcat 日志

    架构 前端展示 --> 索引搜索 <-- 日志提取及过滤 --> 日志缓存 <-- 日志收集 Kibana --> Elastash <-- Logstash -- ...

  8. elk收集tomcat日志

    1.elk收集tomcat普通日志: 只在logstash节点增加如下文件,重启logstash即可: cat >>/home/logstash-6.3.0/config/tomcat_t ...

  9. 修改tomcat应用日志默认编码格式

    前言 今天开发跟我说tomcat日志中的中文不能正常显示,根据以往的经验,我觉得可能跟服务器的编码有关,于是尝试各种方法,但还是没能解决问题. 后来我突然想到会不会跟tomcat的设置有关呢,于是在网 ...

随机推荐

  1. QT常用控件(三)——自定义控件封装

    引言 Qt已经提供了很多的基础控件供开发使用,而Qt原生的控件有时候并不能满足我们的需求,特别是在工业的运用上,比如我们需要一个日期时间的选择器,Qt虽然已经提供了原生的QDateTime控件,但这个 ...

  2. DC-1 靶机渗透测试

    DC-1靶机渗透测试 对着镜子大喊三声"太菜了""太菜了""太菜了" DC系列靶机的第一篇.边学习边日靶机边进步,摸爬滚打着前行. 内容不只 ...

  3. 2020年度钻石C++C学习笔记(1)《博学谷》

    1.C语言概述 1.1 什么是C语言 一提到语言这个词语,自然会想到的是像英语.汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具. 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交 ...

  4. SpringBoot+Maven 多模块项目的构建、运行、打包实战

    前言 最近在做一个很复杂的会员综合线下线上商城大型项目,单模块项目无法满足多人开发和架构,很多模块都是重复的就想到了把模块提出来,做成公共模块,基于maven的多模块项目,也好分工开发,也便于后期微服 ...

  5. mybatis动态sql总结

    前言 平时在开发中,针对动态sql这块目前是薄弱点,自己根据官网在对应项目边测试边写博客,此篇只是为了加深动态sql的熟练度,有不到之处敬请批评指正! 1.if 使用动态 SQL 最常见情景是根据条件 ...

  6. Apache解析漏洞

    多解析特性 在Apache1.x,2.x中Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断.因此对于apache而言,一个test.php.qwea文件依 ...

  7. Java on Visual Studio Code的更新 – 2021年7月

    Nick zhu, Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 7 月版的 Visual Studio Code ...

  8. "百度杯"CTF比赛 十月场——EXEC

    "百度杯"CTF比赛 十月场--EXEC 进入网站页面 查看源码 发现了vim,可能是vim泄露,于是在url地址输入了http://21b854b211034489a4ee1cb ...

  9. Vue响应式原理底层代码模拟实现

    整体分析Vue的基本结构如下图所示:(备注:完整代码github地址https://github.com/1512955040/MiniVue) 上图中,为我们模拟最小vue的整体结构,首先创建一个v ...

  10. 关于stm32 HardFault_Handler 异常的处理 死机

    在系统开发的时候,出现了HardFault_Handler硬件异常,也就是死机,尤其是对于调用了os的一系统,程序量大,检测堆栈溢出,以及数组溢出等,找了半天发现什么都没有的情况下,估计想死的心都有了 ...