循序渐进看Java web日志跟踪(1)-Tomcat 日志追踪与配置

2023-11-08

日志,是软件运行过程中,对各类操作中重要信息的记录。 日志跟踪,不管对于怎么样的项目来说,都是非常重要的一部分,它关系到项目后期的维护和排错,起着举足轻重的作用。项目开发过程中,对日志的记录规则,也将影响到改项目后期维护的难度。

 
在开发过程中,我们经常遇到的日志记录方式包括有系统输出(System.out,最基础方式),日志框架输出(log4J 等)和分布式日志框架输出等。作为项目的开发者,和后期的管理者来说,对于日志的管理,除了需要知道如何进行日志输出,还需要关注的是,项目后期对日志文件的管理。
 
 
日志追踪第一步(web容器日志)
 
在此分享下自己在学习过程中的经历,本人虽然说是学计算机的,可是学校的Java课程并没怎么学习,大部分的Java知识都是在课后自学的。在最先开始,本人并没有接触到所谓的日志框架,哪怕是在搭建SSH项目的过程中,知道有这样的框架,知道三大框架都采用了这样的日子框架进行日志记录,可是还是没有主动的是去使用,所以在最先开始的时候,本人还是使用最原始的System.out,来进行日志的追踪。在项目开发的工程中,遇到了问题,就System.out一下,看看输出的是啥,然后再排错,我觉得应该不止是我一个人,采用的是这样的老办法吧。这样的问题来了,出了问题去哪找?
 
其实,不论我们有没有日志输出,只要我们采用的是成型的web容器,web容器就会对一些必要的信息进行日志的记录。在此以最常用的tomcat为例。
tomcat服务器的日志文件配置保存在$CATALINA_HOME/conf目录下的loggin.properties中(在此不做详解),而对应的日志文件,则保留在$CATALINA_HOME/logs目录下。Tomcat容器默认按照日期进行日志的保存,每天都会产生对应于当天的日志文件,其中包括:容器输出、管理日志、访问日志等。我们常见的tomcat启动输出,就对应的在容器日志文件中。对于一些tomcat的错误信息,可以通过这些日志文件进行排查
 
 
对于日志输出的规则和保留的目录,不同的web容器采用的方式不同,因此需要根据对应的web容器进行日志查找,在此不再举例了
 
 
日志追踪第二步(System.out在哪里)
 
在此说一下,编程过程中,除了System.out以外,当异常抛出或者是说异常处理的e.printstrack,也都采用的是out输出。从编程角度上看,提出尽量规范化编程,减少System.out和e.printstrack的输出,可是,当这一部分不可避免的时候,就得好好的利用它
 
作为常用的web容器,tomcat对系统输出有自己的一套管理方法,根据不同管理系统,有不同的配置。
在Linux下,tomcat会为对应的实例创建一个.out文件,放在$CATALINA_HOME/logs目录下,方便后期的排错使用。然而,该文件默认不能自动分割,在没有配置的情况下,该文件会不断的增大,日久天长,或许等到需要排错的时候,该文件的大小可以以G为单位了。所以,在配置完tomcat实例之后,建议修改一下启动文件,让.out文件随着日期的变化自增。
 
具体的配置如下:
 
vim catalina.sh
找到catalina.out所在处,将其改为catalina.$(date +%Y-%m-%d) .out(注意date之后的空格)
 
 
改完之后,重启tomcat,会发现,tomcat会根据日期的不同,动态的创建.out文件
 
 
 
 
 
在Windows下,启动tomcat通常需要启动一个控制台,同时该控制台需要一直开着,tomcat的SYstem.out 也默认为控制台输出。也就是说,开发者所写的System.out,还有异常输出,都会打印在控制台上面。所以如果出了问题,找控制台就行了。。
          但是,这一种方式显然非常麻烦,Windows控制台显示查看是有限制的,同时也没有持久化的文件保存下来。所以,需要通过配置tomcat的配置文件,来实现与Linux同样的效果。
 
 
1、打开startup.bat文件,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%, 改为call "%EXECUTABLE%" run %CMD_LINE_ARGS% 。
 
 
2、打开catalina.bat文件,在4处 %ACTION% 后面加上     >> %CATALINA_HOME%\logs\catalina.out 。重启tomcat,tomcat的logs文件夹下就会出现catalina.out文件了。
 
 
按照上面的方法,同样存在着.out无限变大的问题。如果想要其按照日期进行配置可以通过将catalina.out改为catalina.%date:~0,4%-%date:~5,2%-%date:~8,2%.out,重启即可
 
 
至此,关于tomcat的日志追踪,整理完毕。其中部分资源来自网络。
 

转载于:https://www.cnblogs.com/Seanit/p/5084488.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循序渐进看Java web日志跟踪(1)-Tomcat 日志追踪与配置 的相关文章

随机推荐

  • Windows安装和配置VCenter

    Vcenter的环境搭建和配置 Vcenter简介 Vcenter一般指 VMware vCenter Server VMware vCenterServer 提供了一个可伸缩 可扩展的平台 为 虚拟化管理奠定了基础 VMware vCen
  • 射线与AABB型包围盒相交算法

    基础知识 AABB包围盒 也叫轴对称包围盒 意思就是它的六个面总是分别平行XYZ三个轴的 相交计算原理 计算射线与包围盒每个面的平面的交点 计算这个点是否在包围盒面的范围 在就是相交 不在就是没有相交 图解 用个2D图形简单讲解一下 首先从
  • C++ 一些学习笔记(十一)类和对象-继承

    C 一些学习笔记 十一 类和对象 继承 主要是针对之前学习C的时候一些知识点的遗漏的补充 还有一些我自己觉得比较重要的地方 本文章的主要内容是关于继承 1 继承的基本语法 2 继承方式 3 继承中的对象模型 4 继承中的构造和析构顺序 5
  • 虚拟化技术调研

    虚拟化技术调研 容器 虚拟化技术 容器是一种轻量级虚拟化技术 它可以在一台宿主机上共享内核 并且在运行应用程序时具有独立的文件系统空间 网络空间 进程空间和用户空间 常见的容器技术有Docker和LXC KVM虚拟化技术 KVM是一种全虚拟
  • Nginx反向代理服务器搭建(超详细)

    一 简介 Nginx engine x 是一个高性能的Web服务器和反向代理服务器 也可以作为邮件代理服务器 反向代理 Reverse Proxy 方式是指以代理服务器来接受internet上的连接请求 然后将请求转发给内部网络上的服务器
  • 前端map传给后端接收

    前端let map new Map map set 1 1 map set 2 2 map set 3 3 map转obj let obj Object create null for let k v of map obj k v ajax
  • sql实现多字段去重

    sql实现多字段去重 且返回所有字段 1 主要思想 根据需求去重的字段进行分组 获取id 在联合查询 2 主要代码 SELECT from table A where id in SELECT max id from table A gro
  • 机器学习框架Ray -- 2.4 基于Ray的Fashion Minst数据集识别

    1 概述 使用 Ray 和 Ray Train 可以在多个 worker 上分发训练任务 从而加速整个训练过程 每个 worker 都在独立的数据子集上训练相同的神经网络结构 在训练过程中 所有 worker 共享并更新同一个神经网络的参数
  • Qt通讯 - MQTT

    部署 1 perl 要安装perl 可以参考perl 2 编译qt的MQTT源码 Qt MQTT SOURCECODE EMQX QMQTT 编译中可能遇到的问题 error
  • C++继承内存对象模型

    最近研究了一下 C 继承的内存对象模型 主要是读了读http blog csdn net haoel article details 3081328 C 对象的内存布局 很推荐这篇文章 对这篇文章做了做总结 本文的大部分内容来自于这篇文章中
  • oracle归档日志的概念,浅谈Oracle归档日志

    什么是归档日志 归档日志 Archive Log 是非活动的重做日志备份 通过使用归档日志 可以保留所有重做历史记录 当数据库处于ARCHIVELOG模式并进行日志切换式 后台进程ARCH会将重做日志的内容保存到归档日志中 当数据库出现介质
  • 使用jstl时出错

    报错描述 在maven项目中配置了jstl工具后 并在启动项目时出现如下问题 报错原因 第一次报错原因 pom xml文件中对jstl引用错误 第二次报错原因 没有加入standard jar 解决办法 在maven的依赖中写成如下配置
  • ts中lambda表达式_'Lambda表达式在Javac中的翻译'规范

    ts中lambda表达式 现在可以使用 javac中的Lambda表达式的翻译 规范的初稿 该规范旨在提出一种策略 用于将 Lambda Strawman 提议的各个部分从Java源代码转换为字节码 方法引用的伪语法将用 于转换为采用 方法
  • 深圳铨顺宏圆满落幕IOTE 2022第十八届国际物联网展

    11月15日 期待已久的IOTE 2022 第十八届国际物联网展在深圳会展中心 宝安新馆 正式拉开序幕 展商云集 盛大开幕 作为物联网行业一年一度的重大盛会 本届展会聚集了全国行业精英 涵盖了全球范围智慧仓储物流 档案信息化 智慧新零售 智
  • vue 解决Invalid Host header

    vue 解决Invalid Host header 在build webpack dev conf js文件中 加上disableHostCheck true 如下图
  • 路由器抓包工具TCPDUMP使用方式

    一 概述 tcpdump 用简单的语言概括就是dump the traffic on a network 是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具 windows平台有sniffer等工具 tcpd
  • 关于如何提高自己的写程序的思维!

    工作有两种 一种是作法与程序已经确定 执行者只要依样画葫芦 就可完成工作 这是所谓的 标准操作 另一种则必须加进执行者的创意功夫 最常见的例子是 开发新产品如果没有创意 就不可能与众不同 如果你希望自己年薪百万以上 唯一方法就是养成工作时加
  • 为取经而来_唐僧在取经路上犯的哪个大错?原本两三年的路他却走了14年

    三世诸佛 十二部经 在人性中本自具有 不能自悟 需求善知识指示方见 唐朝盛年 为了取得经书 感化众人 唐僧师徒踏上了西天取经之路 路途遥远 责任重大 唐僧师徒在路上马不停蹄 从未有片刻休息 但是 唐僧犯了一个致命的错误 导致原本两三年的路他
  • Python之枚举类Enum定义错误码

    在 web 项目中 我们经常使用自定义状态码来告知请求方请求结果以及请求状态 在 Python 中该如何设计自定义的状态码信息呢 1 普通类 字典设计状态码 class RETCODE OK 0 ERROR 1 IMAGECODEERR 4
  • 循序渐进看Java web日志跟踪(1)-Tomcat 日志追踪与配置

    日志 是软件运行过程中 对各类操作中重要信息的记录 日志跟踪 不管对于怎么样的项目来说 都是非常重要的一部分 它关系到项目后期的维护和排错 起着举足轻重的作用 项目开发过程中 对日志的记录规则 也将影响到改项目后期维护的难度 在开发过程中