`
xfxlch
  • 浏览: 168136 次
  • 性别: 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
分享到:
评论

相关推荐

    10 reasons to use logback !------log4j他爹告诉你为何要使用新的日志包logback

    标题中的“10 reasons to use logback”是一个讨论日志框架选择的主题,它提出了使用logback而非其他日志工具(如log4j)的十个理由。logback是log4j的作者Ceki Gülcü创建的一个更现代、性能更优的日志框架。在...

    logback 1.2.3.zip

    标题"Logback 1.2.3.zip"指的是Logback框架的一个特定版本,即1.2.3,它被压缩成一个ZIP文件供下载和使用。描述中提到的"logback-access-1.2.3.jar"是Logback访问模块的1.2.3版本的JAR文件,这通常是用来处理HTTP...

    logback.的jar包

    Logback 是一个用于日志记录的开源框架,由 Ceki Gülcü(也是 Log4j 的创始人)设计并开发。它作为 Log4j 的升级版,提供了更高的性能和更丰富的功能。Logback 分为三个主要组件:logback-core、logback-classic ...

    Logback框架需要的3个jar包和logback.xml文件

    Logback 是一个在Java应用程序中广泛使用的日志记录框架,它是对早期的log4j框架的一个升级和扩展。Logback 提供了高效、灵活的日志记录解决方案,支持多种日志级别,如DEBUG、INFO、WARN、ERROR等,帮助开发者调试...

    Java开发-日志管理-logback框架日志系统基础

    在日常工程开发中,日志是非常重要的一部分,通过日志可以迅速定位线上问题,日志框架也有很多选择,日志框架Logback和Log4j是同一个作者,Logback相比于Log4j,性能提高了10倍以上的性能,占用的内存也变小了,并且...

    logback完整jar包下载

    Logback 是一个 Java 平台上的日志框架,由 Ceki Gülcü(Log4j 的创始人)设计并维护。它旨在成为 Log4j 的继任者,提供更高效、更灵活的日志记录解决方案。Logback 分为三个主要组件:logback-classic、logback-...

    logback-0.9.27

    "Logback-0.9.27" 是一个早期版本的 Logback 框架,由 Ceki Gülcü 创建,作为知名日志框架 Log4j 的后继者。这个版本号表明它是 0.9.x 系列中的第 27 个迭代。 **描述解析:** "官方logback-0.9.27.jar" 表示这...

    logback-chinese-manual:logback 中文手册文档

    logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J,所以你可以随意的从其它日志框架(例如:log4j 或者 java.util.logging)切回到 logack。logback-access 可以与 Servlet 容器进行整合,...

    LogBack 中文开发手册

    Logback 中文手册,清晰版. 简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。 Logback 主要由三个模块组成: logback-core logback-classic logback-access

    logback日志框架包

    XML配置文件是logback框架的核心部分,通过配置,我们可以指定日志级别(TRACE、DEBUG、INFO、WARN、ERROR、OFF),定义日志输出目的地(控制台、文件、网络、数据库等),设置过滤器以控制哪些日志被记录,以及如何...

    logback-0.9.18.zip

    Logback 是一个用于日志记录的开源框架,由 Ceki Gülcü 创建,他是早期广泛使用的日志框架 Log4j 的主要开发者。Logback 是作为 Log4j 的继承者而设计的,它在性能、灵活性和可配置性方面进行了优化。Logback ...

    logback官方中文版文档.pdf

    Logback 是一个专门为Java应用程序设计的日志框架,由log4j的创始人Ceki Gülcü设计,旨在提高日志处理的效率和灵活性。它在性能和资源消耗方面优于log4j和其他日志系统,提供了许多独特的特性,如Marker、参数化...

    logback核心包

    在Java领域,Logback是广泛应用的日志框架,尤其在与Simple Logging Facade for Java (SLF4J)结合使用时,能够提供高效、灵活的日志记录功能。本文将深入探讨"Logback核心包"的相关知识点。 **1. Logback基础** ...

    logback-1.1.2源码包

    Logback 是一个用于日志记录的开源框架,由 Ceki Gülcü(也创建了广泛使用的 log4j)开发。它是对 log4j 的升级,旨在提供更高的性能、更灵活的配置以及更好的可扩展性。Logback 分为三个主要组件:logback-core、...

    十个 log4j 转移到LogBack的理由

    LogBack 是一个日志框架,它是 Log4j 的后继者,由 Log4j 的创始人 Ceki Gülcü 与 Sébastien Pennec 共同创建。本文将探讨十个理由,解释为什么你应该从 log4j 迁移到 LogBack。 1. **性能提升**:LogBack 在...

    slf4j+logback 于log4j+commons-logging大PK

    Logback分为三个组件:ch.qos.logback.core(核心库),ch.qos.logback.classic(提供Log4j兼容API),以及ch.qos.logback-access(处理Servlet容器的日志访问)。Logback还包括了强大的自定义布局和过滤器功能,...

    Logback日志系统文件

    Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...

    logback官方文档+jar包

    Logback 是一个 Java 平台上的日志框架,由 Ceki Gülcü 创建,作为 Log4j 的继任者。它致力于提供高效、灵活且无侵入的日志记录解决方案。Logback 由三个主要组件构成:logback-core、logback-classic 和 logback-...

    logback-1.0.6

    Logback 是一个用于日志记录的开源框架,由 Ceki Gülcü 创建,它是 Log4j 的继任者,并且在很多方面进行了优化和改进。Logback 目标是提高应用程序的日志性能,同时保持高度的灵活性和可配置性。在Java开发中,...

    使用Logback的10个理由

    6. **log4j兼容**:即使你习惯于使用log4j,也可以通过slf4j-log4j12.jar桥接库继续使用log4j的API,同时利用logback的性能优势。 7. **动态配置**:Logback 的配置引擎Joran(Java Oriented Rule Architecture)...

Global site tag (gtag.js) - Google Analytics