tomcat统计日志配置
- 格式:pdf
- 大小:470.54 KB
- 文档页数:8
tomcat配置文件详解(一):目录结构tomcat的目录结构如下:目录名简介bin 存放启动和关闭tomcat脚本conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xmlwork 存放jsp编译后产生的class文件webapp 存放应用程序示例,以后要部署的应用程序也要放到此目录logs 存放日志文件lib/japser/common 这三个目录主要存放tomcat所需的jar文件(二):server.xml配置简介下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档元素名属性解释server port 指定一个端口,这个端口负责监听关闭tomcat的请求shutdown 指定向端口发送的命令字符串service name 指定service的名字Connector (表示客户端和service之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求minProcessors 服务器启动时创建的处理请求的线程数maxProcessors 最大可以创建的处理请求的线程数enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理connectionTimeout指定超时的时间数(以毫秒为单位)Engine (表示指定service中的请求处理机,接收和处理来自Connector的请求) defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的Context (表示一个web应用程序,通常为WAR文件,关于WAR 的具体信息见servlet规范) docBase 应用程序的路径或者是WAR文件存放的路径path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/**** reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序host (表示一个虚拟主机) name 指定主机名appBase 应用程序基本目录,即存放应用程序的目录unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR 文件中运行应用程序Logger (表示日志,调试和错误信息) className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口prefix 指定log文件的前缀suffix 指定log文件的后缀timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt Realm (表示存放用户名,密码及role的数据库) className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样) className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息directory 指定log文件存放的位置pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。
修改位置如下图具体的解释如下Access Log Valve用来创建日志文件,格式与标准的web server日志文件相同。
可以使用用日志分析工具对日志进行分析,跟踪页面点击次数、用户会话的活动等。
Access Log Valve 的很多配置和行为特性与File Logger相同,包括每晚午夜自动切换日志文件。
Access Log Valve可以和任何Catalina容器关联,记录该容器处理的所有请求。
例子如下:<Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%{X-Forwarded-For-Pound}i %l %u %t "%r" %s %b %T"%{HTTP_X_UP_CALLING_LINE_ID}i" "%{x-up-calling-line-id}i" "%{User-Agent}i""pattern属性值由字符串常量和pattern标识符加上前缀"%"组合而成。
pattern标识符加上前缀"%",用来代替当前请求/响应中的对应的变量值。
目前支持如下的pattern:∙%a - 远端IP地址∙%A - 本地IP地址∙%b - 发送的字节数,不包括HTTP头,如果为0,使用"-"∙%B - 发送的字节数,不包括HTTP头∙%h - 远端主机名(如果resolveHost=false,远端的IP地址)∙%H - 请求协议∙%l - 从identd返回的远端逻辑用户名(总是返回 '-')∙%m - 请求的方法(GET,POST,等)∙%p - 收到请求的本地端口号∙%q - 查询字符串(如果存在,以 '?'开始)∙%r - 请求的第一行,包含了请求的方法和URI∙%s - 响应的状态码∙%S - 用户的session ID∙%t - 日志和时间,使用通常的Log格式∙%u - 认证以后的远端用户(如果存在的话,否则为'-')∙%U - 请求的URI路径∙%v - 本地服务器的名称∙%D - 处理请求的时间,以毫秒为单位∙%T - 处理请求的时间,以秒为单位运行结果常使用web服务器的朋友大都了解,一般的web server有两部分日志:一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。
tomcat中的logging.properties配置具体分析Tomcat默认使用JULI日志系统Tomcat 日志信息分为两类:一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息。
二是访问日志信息,它记录的访问的时间,IP ,访问的资料等相关信息。
一Cataline引擎的日志文件,文件名catalina.日期.logTomcat下内部代码抛出的日志,文件名localhost.日期.log(jsp 页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类抛出的,日志信息就在该文件!)Tomcat下默认manager应用日志,文件名manager.日期.log 控制台输出的日志,Linux下默认重定向到catalina.out二Access日志(Servlet.xml配置)日志的级别分为如下 7 种:SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)Tomcat使用的日志配置文件:$CATALINA_BASE/conf/logging.properties以tomcat-6.0.29为例:#配置tomcat的日志输出方式,这里表示文件输出和控制台输出.handlers = /doc/df17730159.html,.apache.juli.FileHandler, java.util.logging.ConsoleHandler/doc/df17730159.html,.apache.juli.FileHand ler.level = FINE #日志级别例:/doc/df17730159.html,.apache.juli.FileHand ler.level = FINE #设置 catalina 日志的级别为: FINE/doc/df17730159.html,.apache.juli.FileHand ler.level = OFF #禁用 catalina 日志的输出/doc/df17730159.html,.apache.juli.FileHand ler.level = ALL#输出 catalina 所有的日志消息均输出/doc/df17730159.html,.apache.juli.FileHand ler.directory = ${catalina.base}/logs #日志输出目录,此设置表示tomcat日志输出到tomcat\logs目录下/doc/df17730159.html,.apache.juli.FileHand ler.prefix = catalina. #日志输出前缀,后面跟日期信息(yyyy-MM-dd) 注:tomcat_6.0.29输出4种不同的日志:catalina、localhost、manager、host-managerjava.util.logging.ConsoleHandler.level = FINE #控制台日志输出级别java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter #控制台日志输出格式化类,Formatter 为格式化 LogRecords 提供支持。
tomcat常用的调优参数Tomcat常用的调优参数Tomcat是一个开源的Java Servlet容器,广泛应用于Java Web 应用程序的部署和运行。
为了提高Tomcat的性能和稳定性,我们可以通过调优参数来优化其配置。
本文将介绍一些常用的Tomcat 调优参数,帮助您更好地配置和优化T omcat服务器。
1. 内存设置- -Xms: 设置JVM的初始堆大小,建议设置为物理内存的1/4或1/3。
- -Xmx: 设置JVM的最大堆大小,建议设置为物理内存的1/2或2/3。
- -XX:MaxPermSize: 设置JVM的永久代大小,建议设置为256MB或512MB。
- -XX:MaxMetaspaceSize: 设置JVM的元空间大小,建议设置为256MB或512MB。
2. 线程设置- maxThreads: 设置Tomcat的最大线程数,建议根据服务器的硬件配置和并发请求数进行调整。
- acceptCount: 设置Tomcat接受请求的队列大小,建议设置为200或300。
- connectionTimeout: 设置Tomcat的连接超时时间,建议设置为30秒或60秒。
3. 连接器设置- protocol: 设置连接器的协议,常用的有HTTP/1.1和AJP/1.3。
- port: 设置连接器的监听端口,建议使用80端口作为HTTP连接器的默认端口。
- maxKeepAliveRequests: 设置每个Keep-Alive连接的最大请求数,建议设置为100或200。
- keepAliveTimeout: 设置Keep-Alive连接的超时时间,建议设置为5秒或10秒。
4. 缓存设置- cacheSize: 设置Tomcat的静态文件缓存大小,建议根据静态文件的数量和大小进行调整。
- cacheTTL: 设置静态文件缓存的过期时间,建议设置为1小时或更长。
- cacheObjectMaxSize: 设置缓存对象的最大大小,建议根据缓存对象的平均大小进行调整。
catalina.log日志生成规则-回复“catalina.log日志生成规则”是指Apache Tomcat服务器中的c atalina.log文件的生成规则和相关信息。
Apache Tomcat是一个开源的Java Servlet容器和JavaServer Pages(JSP)引擎,用于支持Java应用程序的部署和运行。
catalina.log是Tomcat服务器生成的日志文件,记录了服务器的运行状态、错误信息和其他关键事件。
在这篇文章中,我们将深入探讨catalina.log日志生成规则,帮助读者更好地理解Tomcat服务器的运行和调试。
第一步:理解Tomcat服务器的日志模块在开始探讨catalina.log的生成规则之前,我们先来了解一下Tomcat 服务器的日志模块。
Tomcat服务器使用Apache Commons Logging 库来记录日志。
该库提供了一套通用的日志接口,并且可以与多种日志实现框架集成,如Log4j、slf4j等。
这使得开发人员可以根据自己的需求选择最适合的日志框架。
在Tomcat中,默认的日志实现框架是java.util.logging。
第二步:理解catalina.log日志文件catalina.log是Tomcat服务器生成的日志文件,它主要用于记录服务器的运行状态、错误信息和其他关键事件。
所有的Tomcat组件和扩展都会将日志信息写入catalina.log文件。
这些日志信息可以帮助开发人员进行服务器的调试、故障排查和性能优化。
catalina.log文件默认存储在Tomcat服务器的logs目录下。
在每次服务器启动时,catalina.log文件都会被重新创建。
一般情况下,日志信息会以追加的方式写入catalina.log文件,以避免覆盖之前的日志记录。
第三步:catalina.log日志生成规则catalina.log日志的生成规则由Tomcat的logging.properties文件中的配置决定。
tomcat logging 级别
Tomcat 是一个开源的 Java Web 服务器和 servlet 容器,它提供了几种不同的日志记录级别,用于控制日志消息的详细程度。
这些日志级别包括:
- FATAL:表示严重的错误,导致应用程序无法继续运行。
- ERROR:表示错误情况,但应用程序可以继续运行。
- WARN:表示可能会出现问题,但不一定是错误。
- INFO:表示一般信息,用于监控应用程序的运行状态。
- DEBUG:表示详细的调试信息,通常用于开发和调试阶段。
通过设置不同的日志级别,可以控制 Tomcat 记录的日志消息的详细程度。
例如,可以将日志级别设置为 WARN,只记录警告和错误消息,而不会记录 INFO 和 DEBUG 消息,以减少日志量和提高性能。
要设置 Tomcat 的日志级别,可以通过修改 Tomcat 的配置文件来完成。
具体的配置文件位置和名称可能因操作系统和 Tomcat 版本而有所不同,但通常可以在 Tomcat 的安装目录下找到名为 catalina.properties 的文件。
在 catalina.properties 文件中,可以找到以下行:
```properties
logging.level.=INFO
```
将其修改为所需的日志级别,例如:
```properties
logging.level.=WARN
```
保存并重新启动 Tomcat,新的日志级别将生效。
需要注意的是,设置较高的日志级别可能会导致日志量增加,因此在生产环境中应根据实际需要选择适当的日志级别。
Tomcat配置⽂件详解打开Tomcat的配置⽬录,我们会发现下⾯的配置⽂件:server.xml:Tomcat的主配置⽂件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;web.xml:遵循Servlet规范标准的配置⽂件,⽤于配置servlet,并为所有的Web应⽤程序提供包括MIME映射等默认配置信息;context.xml:所有host的默认配置信息;logging.properties:⽇志相关配置;tomcat-users.xml:Realm认证时⽤到的相关⾓⾊、⽤户和密码等信息;Tomcat⾃带的manager默认情况下会⽤到此⽂件;在Tomcat中添加/删除⽤户,为⽤户指定⾓⾊等将通过编辑此⽂件实现;catalina.policy:Java相关的安全策略配置⽂件,在系统资源级别上提供访问控制的能⼒,以安全模式启动Tomcat会使⽤这个配置catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此⽂件的相关设置;jaspic-providers.xml:⽤户认证配置⽂件这篇博客就来介绍下这⼏个配置⽂件的作⽤,以及常⽤的配置选项。
server.xml配置server.xml是Tomcat的主配置⽂件,可以对Service, Connector, Engine, Realm, Valve, Hosts等主组件进⾏相关配置。
<!-- port: 接收shutdown指令的端⼝,默认仅允许通过本机访问,默认为8005;shutdown:发往此Server⽤于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;使⽤⽅式:telnet localhost 8005,输⼊SHUTDOWN即可关闭tomcat如果你不配置这两个属性,Tomcat的这种关闭机制还是会运⾏的。
tomcat访问日志标准格式
Tomcat 访问日志的标准格式通常是以下形式:
plain.
<IP 地址> [<日期和时间>] "<请求方法> <请求的URL> <协议>" <状态码> <响应大小>。
其中:
`<IP 地址>` 是客户端的 IP 地址。
`<日期和时间>` 是请求发生的日期和时间。
`<请求方法>` 是客户端使用的 HTTP 请求方法,比如 GET、POST 等。
`<请求的URL>` 是客户端请求的具体 URL 地址。
`<协议>` 是客户端使用的协议,通常是 HTTP/1.1 或
HTTP/2.0。
`<状态码>` 是服务器返回的 HTTP 状态码,用来表示请求的处
理结果。
`<响应大小>` 是服务器返回的响应的大小,通常以字节为单位。
这种格式的访问日志可以帮助管理员进行访问分析、性能监控
和安全审计等工作。
tomcat访问(access)⽇志配置和记录Post请求参数⼀、配置与说明tomcat访问⽇志格式配置,在config/server.xml⾥Host标签下加上<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />我们在⽇志⽂件中将看到如下⽂本:10.217.14.16 - - [21/Oct/2016:15:48:54 +0800] "POST /updates/related_notice_num.json HTTP/1.0" [channel=App Store&gid=92391918-2173-4A66-8B31-B2FB3F8FB3DF&os=2&plat=2&sver=10.000000&token=MzM1OTc0MjQ1MkB3ZWliby55bXguY29tfHdlaWJvfDQ5ZGFmMjk0YjQ5YWQxMTZiZjBmYWM4ZDdhYzg3ZWQ0&ua=&ver=4.2.1] 200 - AllApp/4.2.1 (iPhone; iOS 10.0.2; Scale/3.00) 0.004 91参数说明:className 官⽅⽂档上说了:This MUST be set toorg.apache.catalina.valves.AccessLogValve to use the default access log valve。
在Linux上,如果你想要拆分Tomcat的日志文件,你可以按照以下步骤进行操作:
1. 找到Tomcat的日志目录:默认情况下,Tomcat的日志目录位于`/var/log/tomcat`或`/usr/local/tomcat/logs`。
你可以使用以下命令来查找日志目录:
```bash
find / -name tomcat.log
```
2. 停止Tomcat服务:在拆分日志之前,确保Tomcat服务已经停止。
你可以使用以下命令停止Tomcat服务:
```bash
sudo service tomcat stop
```
3. 拆分日志文件:使用`split`命令将日志文件拆分为较小的文件。
例如,假设你希望将日志文件拆分为每5MB一个文件,可以使用以下命令:
```bash
split -b 5M /path/to/tomcat.log /path/to/split-logs/
```
上述命令将`/path/to/tomcat.log`拆分为每5MB一个的文件,并将它们保存在`/path/to/split-logs/`目录下。
4. 启动Tomcat服务:拆分完日志文件后,重新启动Tomcat服务以继续记录新的日志。
使用以下命令启动Tomcat服务:
```bash
sudo service tomcat start
```
现在,你已经成功地拆分了Tomcat的日志文件。
请记住,这只是一个基本的示例,你可以根据自己的需求调整拆分的大小和目录。
(原创)设计一个Tomcat访问日志分析工具
常使用web服务器的朋友大都了解,一般的web server有两部分日志:
一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息
二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。
现在我来和大家介绍一下利用tomcat产生的访问日志数据,我们能做哪些有效的分析数据?
首先是配置tomcat访问日志数据,默认情况下访问日志没有打开,配置的方式如下:编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录
把以下的注释(<!-- -->)去掉即可。
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->
其中directory是产生的目录tomcat安装${catalina}作为当前目录
pattern表示日志生产的格式,common是tomcat提供的一个标准设置格式。
其具体的表达式为%h %l %u %t "%r" %s %b
但本人建议采用以下具体的配置,因为标准配置有一些重要的日志数据无法生。
%h %l %u %t "%r" %s %b %T
具体的日志产生样式说明如下(从官方文档中摘录):
* %a - Remote IP address
* %A - Local IP address
* %b - Bytes sent, excluding HTTP headers, or '-' if zero
* %B - Bytes sent, excluding HTTP headers
* %h - Remote host name (or IP address if resolveHosts is false)
* %H - Request protocol
* %l - Remote logical username from identd (always returns '-')
* %m - Request method (GET, POST, etc.)
* %p - Local port on which this request was received
* %q - Query string (prepended with a '?' if it exists)
* %r - First line of the request (method and request URI)
* %s - HTTP status code of the response
* %S - User session ID
* %t - Date and time, in Common Log Format
* %u - Remote user that was authenticated (if any), else '-'
* %U - Requested URL path
* %v - Local server name
* %D - Time taken to process the request, in millis
* %T - Time taken to process the request, in seconds
There is also support to write information from the cookie, incoming header, the Session or something else in the ServletRequest. It is modeled after the apache syntax:
* %{xxx}i for incoming headers
* %{xxx}c for a specific cookie
* %{xxx}r xxx is an attribute in the ServletRequest
* %{xxx}s xxx is an attribute in the HttpSession
现在我们回头再来看一下下面这个配置%h %l %u %t "%r" %s %b %T 生产的访问日志数据,我们可以做哪些事?
先看一下,我们能得到的数据有:
* %h 访问的用户IP地址
* %l 访问逻辑用户名,通常返回'-'
* %u 访问验证用户名,通常返回'-'
* %t 访问日时
* %r 访问的方式(post或者是get),访问的资源和使用的http协议版本
* %s 访问返回的http状态
* %b 访问资源返回的流量
* %T 访问所使用的时间
有了这些数据,我们可以根据时间段做以下的分析处理(图片使用jfreechart工具动态生成):
* 独立IP数统计
* 访问请求数统计
* 访问资料文件数统计
* 访问流量统计
* 访问处理响应时间统计
* 统计所有404错误页面
* 统计所有500错误的页面
* 统计访问最频繁页面
* 统计访问处理时间最久页面
* 统计并发访问频率最高的页面
分析工具包括两大部分,一个是后台解释程序,每天执行一次对后台日志数据进行解析后保存到数据库中。
第二个是显示程序,从数据库中查询数据并生成相应的图表信息。