`
xfxlch
  • 浏览: 162509 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

LogBack 框架里log-access的使用

    博客分类:
  • Java
阅读更多
背景:
想通过配置log-access来实现直接使用浏览器来访问我们自己指定的log文件。

方案:
原来以为是可以通过直接配置log-access的方式来是实现用http来访问我们的日志文件的。我的意思是说:如果我们把日志文件重定向到服务器上的:/server/logs/taobao.log文件,一般情况下,我们都是通过登录到服务器上,然后tail -f /server/logs/taobao.log来查看,但是这样子很麻烦,我想直接在浏览器里查看这个日志文件,就像查看ftp服务器上的某个文件一下方便。但是后来发现log-access不是这个用途,log-access主要是用来配置一个文件日志文件,来记录 外部访问的http请求信息的。

那不管怎么样,既然看了一下log-access就记录一下好了,用http方式访问日志,下次重写一个文章好了。

实施:
首先是给出几个链接,对理解logback有一些帮助。
http://blog.csdn.net/longaohun/article/details/6782046
http://wuyilun2.blog.163.com/blog/static/9853110201111595858365/
以及log-access官网
http://logback.qos.ch/access.html#tomcat

按照官网的解释在tomcat上的配置可以如下:
1. 修改$TOMCAT_HOME/conf/server.xml文件
<Valve className="ch.qos.logback.access.tomcat.LogbackValve" filename="c:/logback-access.xml"/>
后面的finlename参数用来指定logback-access.xml文件的位置。

2. 添加 logback-access.xml文件,默认是放在$TOMCAT_HOME/conf/目录下就好。
<configuration>
  <!-- always a good activate OnConsoleStatusListener -->
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />  
 
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${catalina.base}/logs/access.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${catalina.base}/logs/access.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
    </rollingPolicy>
 
    <encoder>
      <pattern>combined</pattern>
    </encoder>
  </appender>
  
  
  <!-- always a good activate OnConsoleStatusListener -->
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />  

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%h %l %u %user %date "%r" %s %b</pattern>
    </encoder>
  </appender>

  <appender-ref ref="STDOUT" />

  <appender-ref ref="FILE" />
</configuration>

这里相关的Appender的信息可以参考前文的link文章。

3. 另外如果想要通过web来查看logback-access.xml配置的相关信息,logback-access提供了一个serverlet来获取这些配置信息。只要在我们的web项目里的web.xml里添加如下mapping信息。
	 <servlet>
	    <servlet-name>AccessViewStatusMessages</servlet-name>
	    <servlet-class>ch.qos.logback.access.ViewStatusMessagesServlet</servlet-class>
	  </servlet>

	  <servlet-mapping>
	    <servlet-name>AccessViewStatusMessages</servlet-name>
	    <url-pattern>/lbAccessStatus</url-pattern>
	  </servlet-mapping>


4. 最后要做的就是添加logback-access.jar的依赖了,我们需要两个jar包,一个logback-access-1.x.jar,另一个是logback-core-1.x.jar,因为logback-access跟slf4j是类似的,它只是提供了一层皮,内核还是调用的logback-core。
pom.xml
<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-access</artifactId>
			<version>1.1.3</version>
		</dependency>


添加这个就好了,logback-access依赖了logback-core。

好了这样就可以启动web应用了。

启动完成之后,就可以访问http://localhost:8080/userlogin/lbAccessStatus
结果如下:



access.log 日志来一个截图:
127.0.0.1 - - [18/Oct/2015:15:40:11 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
127.0.0.1 - - [18/Oct/2015:15:47:22 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 500 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
127.0.0.1 - - [18/Oct/2015:16:05:10 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
127.0.0.1 - - [18/Oct/2015:16:05:21 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
127.0.0.1 - - [18/Oct/2015:16:05:40 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"
127.0.0.1 - - [18/Oct/2015:16:06:08 +0800] "GET /userlogin/lbAccessStatus HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"

通过上面的日志,我们大概知道请求来源,以及请求了哪个requestion,对方的pc以brower的相关信息,这个对网站流量分析还是很有用的

遇到的坑:

1. HTTP Status 500 - ch.qos.logback.core.BasicStatusManager cannot be cast to ch.qos.logback.core.status.StatusManager。
>>原因是jar包冲突了。因为logback-access-1.1.3.jar和logback-core-1.1.3.jar既在tomcat/lib目录下,也在web项目的WEB-INF\lib目录下,这样就造成了冲突。保留一个地方的就可以解决这个问题了。通常我们是保留tomcat/lib下的,不然tomcat启动的时候,会去找配置文件server.xml文件里的ch.qos.logback.access.tomcat.LogbackValve 类,如果找不到就报错了。


----EOF----
  • 大小: 77.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics