tomcat中的日志

tomcat中的日志

tomcat家目录/logs下的日志文件:
 
	catalina.out
	tomcat所有的 启动日志+程序的日志。
 
	catalina.xxxx-xx-xx.log
	tomcat当天的 启动日志+程序的日志。
 
 
	localhost.xxxx-xx-xx.log
	没有被捕获的异常(eg:容器启动时抛出的异常)会将异常信息输出到这里,常用于排查服务启动失败的问题。
 
 
	localhost_access_log.xxxx-xx-xx.txt日志
	tomcat当天的 访问记录





访问日志:localhost_access_log.xxxx-xx-xx.txt

	文档:http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html
	
	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 &quot;%r&quot; [%{postparam}r] %s %{Referer}i %{User-Agent}i %T %b" />


	参数说明:
		className		Java class name of the implementation to use.This MUST be set to org.apache.catalina.valves.AccessLogValve to use the default access log valve.
		directory		日志文件存放的目录。通常设置为tomcat下已有的那个logs文件。
		prefix			日志文件的名称前缀。
		suffix			日志文件的名称后缀。
		resolveHosts	如果是true,tomcat会将这个服务器IP地址通过DNS转换为主机名;如果是false,就直接写服务器IP地址啦。默认false。
		rotatable 		默认为true,tomcat生成的文件名为prefix(前缀)+.+时间(一般是按天算)+.+suffix(后缀),如:localhost_access_log.2007-09-22txt。
						设置为false的话,tomcat会忽略时间,不会生成新文件,文件名就是:localhost_access_log.txt。长此以往,这个日志文件会超级大
		condition		这个参数不太实用,可设置任何值,比如设置成condition="tkq",那么只有当ServletRequest.getAttribute("tkq")为空的时候,该条日志才会被记录下来。
		fileDateFormat	顾名思义,就是时间格式嘛。但这个时间格式是针对日志文件名起作用的。咱们生成的日志文件全名:localhost_access_log.2016-09-22.txt,这里面的2016-09-22就是这么来的。
						如果想让tomcat每小时生成一个日志文件,也很简单,将这个值设置为:fileDateFormat="yyyy-MM-dd.HH"。

		pattern			输出日志的格式,由下面的这些占位符来表示:
			%a   记录访问者的IP
			%A   记录本地服务器的IP
			%b   发送信息的字节数,不包括http头,如果字节数为0的话,显示为-
			%B   发送信息的字节数,不包括http头。
			%h   服务器的名称。如果resolveHosts为false的话,这里就是IP地址了
			%H   访问者的协议
			%I 	 当前请求线程名称
			%l   官方解释:Remote logical username from identd (可能这样翻译:记录浏览者进行身份验证时提供的名字)(always returns '-')
			%m   访问的方式,是GET还是POST
			%p   本地接收访问的端口 
			%q   查询参数
			%r   First line of the request (method and request URI) 请求的方法和URL
			%s   http的响应状态码 
			%S   用户的session ID
			%t   请求时间
			%u   得到了验证的访问者,否则就是"-"
			%U   访问的URL地址
			%v   服务器名称
			%D   Time taken to process the request,in millis,请求消耗的时间,单位毫秒
			%T   Time taken to process the request,in seconds,请求消耗的时间,单位秒记

			%{xxx}i 	传入请求标头
			%{xxx}o 	用于传出响应标头
			%{xxx}c 	对于特定的请求cookie
			%{xxx}s 	xxx是HttpSession中的一个属性
			%{xxx}r 	xxx是ServletRequest中的一个属性。打印post方法的参数时,可以使用该占位符来实现:

			举例:
				/**
				 * 定义一个过滤器,doFilter()方法中在request中添加一个属性postparam,然后在server.xml的配置中使用%{postparam}r 就可以获取到post的参数了。
				 */
				public final class PostParamFilter implements Filter {
				 
					public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
				 
						Enumeration<String> names = request.getParameterNames();
						StringBuilder postparam = new StringBuilder();
						while (names.hasMoreElements()) {
							String name = (String) names.nextElement();
							postparam.append(name).append("=");
							String values[] = request.getParameterValues(name);
							for (int i = 0; i < values.length; i++) {
								if (i > 0) {
									postparam.append("' ");
								}
								postparam.append(values[i]);
							}
							if (names.hasMoreElements()) {
								postparam.append("&");
							}
						}
						request.setAttribute("postparam", postparam);
						chain.doFilter(request, response);
					}
				}



				


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值