- 浏览: 839756 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
日志系统是一个记录信息的组件。在Catalina中,日志系统是一个相对简单的跟容器相关联的组件。
Tomcat在org.apache.catalina.logger包中提供了多个不同的日志系统
Logger接口
一个日志系统必须实现org.apache.catalina.Logger接口
public interface Logger { // ----------------------------------------------------- Manifest Constants /** * Verbosity level constants for log messages that may be filtered * by the underlying logger. */ public static final int FATAL = Integer.MIN_VALUE; public static final int ERROR = 1; public static final int WARNING = 2; public static final int INFORMATION = 3; public static final int DEBUG = 4; // ------------------------------------------------------------- Properties /** * Return the Container with which this Logger has been associated. */ public Container getContainer(); /** * Set the Container with which this Logger has been associated. * * @param container The associated Container */ public void setContainer(Container container); /** * Return descriptive information about this Logger implementation and * the corresponding version number, in the format * <code><description>/<version></code>. */ public String getInfo(); /** * Return the verbosity level of this logger. Messages logged with a * higher verbosity than this level will be silently ignored. */ public int getVerbosity(); /** * Set the verbosity level of this logger. Messages logged with a * higher verbosity than this level will be silently ignored. * * @param verbosity The new verbosity level */ public void setVerbosity(int verbosity); // --------------------------------------------------------- Public Methods /** * Add a property change listener to this component. * * @param listener The listener to add */ public void addPropertyChangeListener(PropertyChangeListener listener); /** * Writes the specified message to a servlet log file, usually an event * log. The name and type of the servlet log is specific to the * servlet container. This message will be logged unconditionally. * * @param message A <code>String</code> specifying the message to be * written to the log file */ public void log(String message); /** * Writes the specified exception, and message, to a servlet log file. * The implementation of this method should call * <code>log(msg, exception)</code> instead. This method is deprecated * in the ServletContext interface, but not deprecated here to avoid * many useless compiler warnings. This message will be logged * unconditionally. * * @param exception An <code>Exception</code> to be reported * @param msg The associated message string */ public void log(Exception exception, String msg); /** * Writes an explanatory message and a stack trace for a given * <code>Throwable</code> exception to the servlet log file. The name * and type of the servlet log file is specific to the servlet container, * usually an event log. This message will be logged unconditionally. * * @param message A <code>String</code> that describes the error or * exception * @param throwable The <code>Throwable</code> error or exception */ public void log(String message, Throwable throwable); /** * Writes the specified message to the servlet log file, usually an event * log, if the logger is set to a verbosity level equal to or higher than * the specified value for this message. * * @param message A <code>String</code> specifying the message to be * written to the log file * @param verbosity Verbosity level of this message */ public void log(String message, int verbosity); /** * Writes the specified message and exception to the servlet log file, * usually an event log, if the logger is set to a verbosity level equal * to or higher than the specified value for this message. * * @param message A <code>String</code> that describes the error or * exception * @param throwable The <code>Throwable</code> error or exception * @param verbosity Verbosity level of this message */ public void log(String message, Throwable throwable, int verbosity); /** * Remove a property change listener from this component. * * @param listener The listener to remove */ public void removePropertyChangeListener(PropertyChangeListener listener); }
日志接口提供了日志系统要实现的方法,最简单的方法是接受一个字符串并将其记录,
最后两个方法会接受一个冗余级别(verbosity level),如果传递的数字低于该类的实例设置的冗余级别,就将信息记录下来,否则就忽略信息。
静态变量定义了五个冗余级别:FATAL, ERROR, WARNING, INFORMATION,和 DEBUG。getVerbosity和setVerbosity分别用来获得和设置冗余级别。
日志接口还有getContainer 和 setContainer方法用来将日志系统跟容器关联起来
Tomcat日志系统
Tomcat提供了三种日志系统,它们分别是FileLogger, SystemErrLogger, 和 SystemOutLogger。
都继承了org.apache.catalina.logger.LoggerBase类
LoggerBase类
LoggerBase类是一个抽象类,它实现了Logger接口中除log(String msg)之外的所有方法。
public abstract void log(String msg);
该方法需要在子类进行覆盖(overload),所有的其他的log方法都调用了该方法
SystemOutLogger类
SystemOutLogger作为LoggerBase的子类提供了log(String message)方法的实现
每一个收到的信息都被传递给System.out.println
public class SystemOutLogger extends LoggerBase {
protected static final String info = "org.apache.catalina.logger.SystemOutLogger/1.0";
public void log(String msg) {
System.out.println(msg);
}
}
SystemErrLogger类
public class SystemErrLogger extends LoggerBase {
protected static final String info = "org.apache.catalina.logger.SystemErrLogger/1.0";
public void log(String msg) {
System.err.println(msg);
}
}
FileLogger类
FileLogger是LoggerBase类中最复杂的
它将从关联容器收到的信息写到文件中,每个信息可以选择性的加上时间戳。
在第一次实例化的时候,该类的实例会创建一个文件,该文件的名字带有日期信息。
如果日期改变了,它会创建一个新的文件并把信息写在里面。
public void log(String msg) { // Construct the timestamp we will use, if requested Timestamp ts = new Timestamp(System.currentTimeMillis()); String tsString = ts.toString().substring(0, 19); String tsDate = tsString.substring(0, 10); // If the date has changed, switch log files if (!date.equals(tsDate)) { synchronized (this) { if (!date.equals(tsDate)) { close(); date = tsDate; open(); } } } // Log this message, timestamped if necessary if (writer != null) { if (timestamp) { writer.println(tsString + " " + msg); } else { writer.println(msg); } } }
log方法接受一个消息并把消息写到日志文件中。
在FileLogger实例的生命周期中,log方法可以打开或关闭多个日志文件。
写日志的方法
private void open() { // Create the directory if necessary File dir = new File(directory); if (!dir.isAbsolute()) dir = new File(System.getProperty("catalina.base"), directory); dir.mkdirs(); // Open the current log file try { String pathname = dir.getAbsolutePath() + File.separator + prefix + date + suffix; writer = new PrintWriter(new FileWriter(pathname, true), true); } catch (IOException e) { writer = null; } }
open方法首先应该创建日志的目录是否存在,如果目录不存在,则首先创建目录
Close方法清空PrintWriter变量writer,然后关闭PrintWriter并将writer设置为null
private void close() {
if (writer == null)
return;
writer.flush();
writer.close();
writer = null;
date = "";
}
发表评论
-
21,tomcat关闭钩子
2012-11-22 20:35 6631在很多环境下,在关闭应用程序的时候需要做一些清理工作。问题在于 ... -
20,tomcat的XML解析---digester
2012-11-22 20:07 1554tomcat使用server.xml配置属性信息Tomcat使 ... -
19tomcat的服务器和服务
2012-11-20 20:10 1074Server服务器 Server接口表示整个Catalina ... -
18,tomcat的主机(host)和引擎
2012-11-16 09:13 2348如果需要在一个Tomcat部署中部署多个上下文,需要使用一个主 ... -
附,listener、 filter、servlet 加载顺序及其详解
2012-11-15 09:10 982一、 1、启动一个WEB项 ... -
17,tomcat中StandardContext
2012-11-15 08:59 5039一个上下文容器(Context)代表一个web应用,每一个上下 ... -
16,tomcat中StandardWrapper实现
2012-11-14 18:28 3883Wrapper接口在Catalina中的标准实现Standar ... -
15,tomcat安全
2012-11-14 09:02 1197有些web应用程序的内容是有限制的,只允许有权限的用户在提供正 ... -
14,tomcat session管理
2012-11-14 09:01 1101Catalina通过一个叫管理器的组建来完成Session的管 ... -
13.tomcat加载器
2012-11-13 13:21 1374库(repository)和源(res ... -
附:JAVA事件处理--观察者模式
2012-11-12 10:33 998简单地说,观察者模式 ... -
11.tomcat生命周期
2012-11-12 10:26 984Catalina由多个组件组成,当Catalina启动的 ... -
10.容器
2012-11-12 10:12 1349容器是一个处理用户servlet请求并返回对象给we ... -
9.Tomcat的默认连接器
2012-11-12 08:52 1177Tomcat连接器是一个可以插入servlet容器的独立模块, ... -
8.连接器
2012-11-12 08:46 935一个可以创建更好的请 ... -
7,Facade外观模式
2012-11-08 11:28 946外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义 ... -
6,一个简单的servlet容器
2012-11-08 11:10 847总的来说,一个全功能的servlet容器会为servlet的每 ... -
5.javax.servlet.Servlet接口
2012-11-08 09:18 947javax.servlet.Servlet接口Servlet编 ... -
4,一个简单的tomcat
2012-11-07 18:10 935流程图如下 -
3.ServerSocket 与 Socket的区别
2012-11-07 16:56 11711.1 ServerSocket类创建 ...
相关推荐
### Tomcat日志详细说明 #### 一、Tomcat日志概述 Apache Tomcat作为一款开源的Servlet容器,被广泛应用于Java Web应用的部署。它不仅支持Servlet还支持JSP等技术,是学习和开发Java Web项目的理想选择之一。为了...
### tomcat日志乱码处理方法总结 在日常运维或者开发过程中,经常遇到Tomcat的日志出现乱码的情况。这不仅影响阅读体验,更有可能在排查问题时带来不便。本文将详细总结几种常见的Tomcat日志乱码处理方法,帮助大家...
- `.handlers`属性定义了日志处理程序的顺序。例如,`java.util.logging.ConsoleHandler`负责将日志输出到控制台,而`java.util.logging.FileHandler`则将日志写入文件。 5. **日志级别配置** - 通过调整日志级别...
标题中的“tomcat下catalina.out日志乱码问题处理”主要涉及的是在Tomcat服务器运行过程中,输出的日志文件`catalina.out`中,中文字符显示为乱码的状况。这通常是由于字符编码不匹配导致的,因为Tomcat在读取或写入...
Tomcat默认使用了Java的`java.util.logging`框架,也支持通过Log4j或者Logback等第三方日志框架进行日志处理。在Tomcat的`conf/logging.properties`或`conf/log4j.properties`(取决于所使用的日志框架)文件中,...
【标题】:Tomcat日志切割与Tomcat优化 【内容】: Tomcat作为流行的Java Servlet容器,其性能和日志管理是运维人员关注的重点。日志切割是保持日志文件大小合理、便于管理和分析的重要手段,而Tomcat优化则关乎...
因此,很多开发者选择集成Log4j来增强Tomcat的日志处理能力。Log4j是一个开源的日志框架,提供了更为灵活和强大的日志配置选项,包括日志级别、输出目的地以及日志分割策略等。 ### 实现日志分割的步骤 要使Tomcat...
为了解决这个问题,我们可以引入`Logback`,一个强大的、灵活的日志框架,来替代默认的日志处理方式,实现日志的按日轮转。 `Logback`由著名的`Log4j`创始人Ceki Gülcü创建,它提供了更高效的日志处理机制,并且...
Tomcat,作为一款广泛应用的开源Java Servlet容器,其日志处理方式对于监控和维护至关重要。本文将详细讲解如何在外网部署Tomcat时,配置按天切分保存日志,以优化存储管理和提升故障排查效率。 首先,我们要了解...
标题中的“Tomcat日志切割”是指在Apache Tomcat服务器中对日志文件进行定期管理和分割的过程。在大型系统中,日志文件可能会迅速增长,占用大量磁盘空间,因此需要有策略地处理这些日志,以便于分析、存储和清理。...
在这个`process_log`函数中,我们可以调用前面定义的`read_iis_logs`或针对Tomcat日志的解析函数,然后进行相应的分析。 **总结** 通过Python进行日志批量分析,我们可以高效地收集、整理和解读大量日志数据,从而...
这就是cronolog在Tomcat日志管理中的重要性所在。 **cronolog工作原理:** cronolog基于cron守护进程运行,可以按照预设的时间格式(如小时、天或周)对日志进行切割。当新的日志数据到达时,它会创建一个新的日志...
通常,将这样的jar包放入Tomcat的`lib`目录是为了让Tomcat在启动时能够加载其中的类,从而实现自定义的日志处理逻辑。 接下来,“修改conf配置文件”是指我们需要编辑Tomcat的配置文件,通常是`logging.properties`...
Tomcat作为一个广泛使用的Java Servlet容器,其日志处理能力直接影响到系统的稳定性和运维效率。本篇将深入探讨"Tomcat日志分割"这一主题,以及如何配置Tomcat以实现日志自动分割,同时解决防止重复启动的问题。 ...
### Logstash收集Tomcat集群日志的解决方案 #### 背景介绍 随着企业规模的不断扩大,业务系统逐渐复杂化,对于系统运维人员而言,如何有效地监控和管理大量的日志数据变得至关重要。尤其是在Web应用程序中,例如...
当我们谈论“Tomcat日志”时,我们通常关注的是Tomcat服务器生成的输出信息,包括启动、运行时状态、错误报告等。 "tomcat日志分割"是指在日志文件达到特定大小后自动创建新的日志文件,以避免单个日志文件过大导致...
Tomcat日志包括标准输出、错误输出以及访问日志,提供了关于应用运行情况的详细信息。访问日志通常遵循自定义的格式,比如Common Log Format(CLF)或Combined Log Format,记录了每个HTTP请求的详细信息。通过分析...
### Tomcat日志控制脚本:精细化管理与自动轮换机制 在IT运维与系统管理领域,日志文件是至关重要的资源,它们记录了应用程序运行过程中的关键信息,包括错误、警告以及正常运行状态下的各种事件。对于Apache ...
这不仅会导致磁盘空间不足的问题,还会影响Tomcat的性能和稳定性,使得应用程序无法正常处理请求。 #### 解决方案 解决这个问题的一种有效方法是通过定期切分`catalina.out`日志文件。这样做不仅可以避免单个日志...
本篇文章将深入探讨`log4j`、`tomcat-juli`以及它们之间的适配器`tomcat-juli-adapters`,并阐述它们在Tomcat日志处理中的作用。 首先,`log4j-1.2.15.jar`是Log4j的版本1.2.15的JAR包。Log4j是一个功能强大的日志...