热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

resinlog日志

入门索引resin作为一款applicationserver,对jsp与servlet提供了良好的支持,自身采接用的java开发,与tomcat相比,各有优劣(resinvstom

          入门索引

          resin作为一款application server,对jsp与servlet提供了良好的支持,自身采接用的java开发,与tomcat相比,各有优劣(resin vs tomcat).对日志支持,resin旗下有自己的一个log系统,与log4j相比有过之无不及


         初始环境搭建

           环境搭建(参照中的hessianhessian的debug日志),resin版本4.0.52,jdk1.7,使用eclipse插件开发.

           环境搭建完成,进行测试,log日志的配置大体区分显式与隐士,显示诸如log4j中的运用api显示调用,还有像resin这种通过配置隐式设置(这种区分只是方便自己理解)


           初始log案例

            web环境采用原始的servlet.新建web项目(空的web.xml)

pom.xml

4.0.0

stustu0.0.1-SNAPSHOTresin

warjavax.servletjavax.servlet-api3.0.1providedorg.apache.httpcomponentshttpclient4.5.3
        servlet使用注解,故需要javax.servlet,使用postman测试,httpclient可注释掉

servlet

package log;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/log.do")
public class LogTestServlet extends HttpServlet{private static final long serialVersiOnUID= 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("call get");resp.getWriter().write("hello");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("call post");doGet(req, resp);}
}
      get访问http://localhost:8080/resin/log.do

       默认打印,控制台

[17-08-08 20:19:01.148] {resin-16} WebApp[production/webapp/default/resin] active       log/access.log日志记录

0:0:0:0:0:0:0:1 - - [08/Aug/2017:20:19:01 +0800] "GET /resin/log.do HTTP/1.1" 200 5 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36"


       结果解释

         access.log的内容在conf/cluster-default.xml配置

         
 path(
resin path)


            format具体参数的意义(resin log)-


       上面漏掉了两个(accesslog)

%l -Not used. Recognized but always results in "-"

%t-time

          因为使用的浏览器访问本机,所以%h-访问的ip是0:0:0:0:0:0:0:1,没有的值以''-"代替

          rollover-period is used to specify the time period, and can be in days (15D), weeks (2W), months (1M), or hours (1h).(设置归档日志的周期)

           acccess-log 参数

           

           其中有四个重要的参数,archive-format(如何归档,如压缩成zip),rollover-priod(周期),rollover-size(大小限制).rollover-count(日期限制)决定对日期进行归档

             初始控制台打印内容由conf/resin.xml控制





         logger是log-handler的具体解释,此处的两个logger主要用于启动时参数的配置,get第一次访问出现上述打印日志

          具体参数解释(resin log hander)-

          format

           level

           name

             timesamp-时间格式,默认出现在行首,name根据包名来控制

注:conf下面几个配置文件resin.xml继承cluster-default.xml(集群配置),也就是resin配置的会覆盖cluster-default.xml的相关配置


resin log配置初窥


    resin log标签(标签参考列表)

       resin log主要通过一些标签完成log的基本配置

log--log format string,The format for log tags is used to specify a format string for each log message. format recognizes EL-expressions. The EL variable log is a com.caucho.log.ELFormatter.ELFormatterLogRecordobject.(个人理解log相对独立,作为一个log detail 描述性结构而存在,log相当于log-handler+logger)

logger--主要配置 JDK logging API, logger用于指定需要log的包及level(logger对log-handler的进一步解释)

             child of ,,,,,(可以理解为作用域)

access-log --主要用于http输出

             child of ,,,,,,,

stdout-log-用于标准输出(system.out)

               child of ,,,,,

stderr-用于错误输出(system.err)

              child of ,,,,,


         resin项目配置  

           一个基本的项目的log配要满足:


  • 日志层级分明(区分log的不同level,正常与异常)
  • 日志错误异常记录
  • 日志存储归类(比如按天存储)
  • 打印请求响应(开发调试阶段)

对于一个容器来讲,还要区分不同的webapp


初步配置



主要更改了配置中的host,通过host区分不同的webapp,stdout与stderr承当一个显示记录日志的角色,通过path,archive-format等将不同的归档不同的日志(如一个webapp对应一个目录,每个周期对应一个目录等)

resin作为容器,其异常还可以由error-page标签处理

java.lang.RuntimeException/error.jsp

         error.jsp

<%@ page language="java" cOntentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>







${requestScope["javax.servlet.error.exception"]}



resin项目配置测试  


package log;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/log.do")
public class LogTestServlet extends HttpServlet{private static final long serialVersiOnUID= 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("call get");System.err.println("error get");int i=1/0;resp.getWriter().write("hello");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("call post");doGet(req, resp);}}

      浏览器访问http://localhost:8080/resin/log.do

      logs/localost目录下生成4个日志文件,access.log,error.log,stderr.log,stdout.log,打印内容


0:0:0:0:0:0:0:1 - - [09/Aug/2017:20:42:45 +0800] "GET /resin/log.do HTTP/1.1" 500 327 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36"
[2017-08-09 21:17:10]HttpServletRequestImpl[HttpRequest[app-0, 3]] java.lang.ArithmeticException: / by zeroat log.LogTestServlet.doGet(LogTestServlet.java:19)at javax.servlet.http.HttpServlet.service(HttpServlet.java:120)at javax.servlet.http.HttpServlet.service(HttpServlet.java:97)at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:290)at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:838)at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1353)at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1309)at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1293)at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1201)at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:997)at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117)at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93)at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:169)at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61)at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
[2017.08.09 21:17:10]error getstdout.log
[2017.08.09 21:17:10]call get


    页面跳转至error.jsp 页面显示

     java.lang.ArithmeticException: / by zero






推荐阅读
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
author-avatar
也碎羽落
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有