s
Log4j 1.x版 引发线程blocked死锁问题 / 使用apache log解决高并发下log4j引起大量线程block问题
http://www.aiprograming.com/b/pengpeng/23
http://zl378837964.iteye.com/blog/2373591
http://m.blog.csdn.net/article/details?id=52401328
Apache Log4j是一个基于Java的日志记录工具,用起来非常方便,但是Log4j 1.x如果使用不慎,会引起死锁问题,进行导致整个网站的宕机
WebLog Expert V5.6 Beta 3
http://wt.duote.com/soft/6057.html
http://70.duote.com.cn/wlexpert.exe
WebLog Expert 能够分析网站的流量记录,将原始的流量记录分析出Activity statistics、Access statistics、Information about visitors、Referrers、Information about errors等基本而重要的流量信息,帮助你了解网友对于你的网站的使用状况。
webloger digger ?
http://guoqinhua1986-126-com.iteye.com/blog/231244
********************LOG4J配置文件 log4j.properties***********
# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
package com.idemfactor.crm.dao; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.LockMode; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.idemfactor.crm.model.Role; /** * Data access object (DAO) for domain model class Role. * * @see com.idemfactor.crm.model.Role * @author MyEclipse Persistence Tools */ public class RoleDAO extends HibernateDaoSupport { private static final Log log = LogFactory.getLog(RoleDAO.class); // property constants public static final String ROLE_NAME = "roleName"; protected void initDao() { // do nothing } public void save(Role transientInstance) { log.debug("saving Role instance"); getHibernateTemplate().save(transientInstance); log.debug("save successful"); } public void delete(Role persistentInstance) { log.debug("deleting Role instance"); getHibernateTemplate().delete(persistentInstance); log.debug("delete successful"); } public Role findById(java.lang.Integer id) { log.debug("getting Role instance with id: " + id); Role instance = (Role) getHibernateTemplate().get( "com.idemfactor.crm.model.Role", id); return instance; } public List<Role> findByExample(Role instance) { log.debug("finding Role instance by example"); List<Role> results = getHibernateTemplate().findByExample(instance); log.debug("find by example successful, result size: " + results.size()); return results; } public List<Role> findByProperty(String propertyName, Object value) { log.debug("finding Role instance with property: " + propertyName + ", value: " + value); String queryString = "from Role as model where model." + propertyName + "= ?"; return getHibernateTemplate().find(queryString, value); } public List<Role> findAll() { log.debug("finding all Role instances"); String queryString = "from Role"; return getHibernateTemplate().find(queryString); } public Role merge(Role detachedInstance) { log.debug("merging Role instance"); Role result = (Role) getHibernateTemplate().merge(detachedInstance); log.debug("merge successful"); return result; } public void attachDirty(Role instance) { log.debug("attaching dirty Role instance"); getHibernateTemplate().saveOrUpdate(instance); log.debug("attach successful"); } public void attachClean(Role instance) { log.debug("attaching clean Role instance"); getHibernateTemplate().lock(instance, LockMode.NONE); log.debug("attach successful"); } }
log4j.properties
log4j.rootLogger=info, stdout log4j.logger.com.idemfactor=debug log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%d{ISO8601}] %5p [%t] (%c{1}:%L) - %m%n #log4j.appender.R=org.apache.log4j.RollingFileAppender #log4j.appender.R.layout=org.apache.log4j.PatternLayout #log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}] %5p [%t] (%c{1}:%L) - %m%n #log4j.appender.R.File=/tmp/fs.log #log4j.appender.R.MaxFileSize=1000KB #log4j.appender.R.MaxBackupIndex=7 # Need this to show all exception details in struts log4j.logger.org.apache.struts.action.ExceptionHandler=debug
end
相关推荐
**Spring Boot SLF4J与Logback日志实践** 在Java开发中,日志系统扮演着至关重要的角色,它能够帮助我们追踪程序运行时的问题、分析性能瓶颈以及调试代码。Spring Boot作为现代化的Java开发框架,已经为我们预设了...
`logback-classic`是Logback的用户接口,`logback-core`是其核心库,而`log4j-over-slf4j`则允许将Log4j的日志调用桥接到SLF4J。 ```xml <!-- logback日志配置开始 --> <groupId>ch.qos.logback</groupId> ...
SLF4J(Simple Logging Facade for Java)是一个Java的日志接口,而Log4j2是一个具体的日志实现框架。Log4j2是Log4j的升级版,提供了更加灵活和强大的日志处理能力,包括异步日志、延迟加载、日志脱敏等功能。接下来...
SLF4J(Simple Logging Facade for Java)是Java的日志抽象层,它提供了一种标准的接口,允许用户在不修改代码的情况下更换不同的日志框架,如Log4j、Logback等。Log4j2是Log4j的升级版,提供了更优秀的性能和更多的...
SLF4J允许开发者在部署时插入所需的日志实现,比如logback、log4j等,这使得项目的可移植性和灵活性大大增强。 Logback是另一个关键组件,它是由log4j的创始人Ceki Gülcü创建的。Logback是目前广泛使用的日志框架...
SLF4J提供了一个抽象层,允许开发者选择自己喜欢的日志框架,如Logback、Log4j等。而Log4j则是Apache的一个经典日志组件,提供了丰富的日志记录功能。 在这个“slf4j-all-log4j12-1.4.3.jar.zip”压缩包中,包含的...
SLF4J(Simple Logging Facade for Java)是一个日志抽象层,它允许开发者在部署时插入任何喜爱的日志框架,例如Log4j、Logback等。`slf4j-api-1.5.6.jar`是SLF4J的API,提供了接口供应用程序调用。 1. **SLF4J API...
Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中,Slf4j 是默认的日志记录框架。本文将介绍如何使用 Slf4j 将...
SLF4J(Simple Logging Facade for Java)是Java日志记录的一个接口层,它为各种日志框架,如Log4j、Logback等提供一个简单的抽象层,使得最终用户能够在部署时插入所需的日志实现。SLF4J 1.7.jar是SLF4J的1.7版本的...
SLF4J是一个日志API,它的主要目标是为各种日志框架提供一个简单的抽象层,如Log4j、Logback等。这样,开发者可以在不修改代码的情况下,自由选择日志实现。SLF4J通过接口定义了日志记录方法,而具体的实现则由...
- **Slf4j**:通过其灵活的接口设计,使得开发人员可以根据实际需求选择不同的实现,如 Logback 或 Log4j2,从而具备良好的可插拔性。 **4.3 集成性** - **Log4j**:虽然它可以很好地与各种 Java 应用程序集成,但...
Spring Boot默认使用Logback作为其日志系统,但同时也支持其他日志框架,包括Log4j。为了将Log4j引入到Spring Boot项目中,我们需要添加相应的依赖。在`pom.xml`文件中,我们需要注释掉Spring Boot默认的日志依赖,...
Spring Boot提供了对多种日志框架的支持,如Logback、Log4j2等,同时也内置了对Java Util Logging的默认支持。本篇文章将详细探讨如何在Spring Boot项目中配置日志输出。 首先,我们需要理解Spring Boot的日志层次...
java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time. Note that SLF4J-enabling your library implies the addition of only a single ...
此外,熟悉这些基础工具的使用也有助于你逐渐掌握更复杂的日志管理系统,比如SLF4J和Logback。 总的来说,Spring与Log4j的结合是Java开发中日志管理的一种高效方式。它不仅提供了强大的日志记录功能,还易于集成和...
这个API的设计目标是为各种日志框架,如log4j、java.util.logging、Logback等,提供一个统一的接口,使得开发人员能够在不修改代码的情况下更换日志系统。 在"slf4j-api.jar.zip"中,主要包含的是SLF4J的API库文件`...
SLF4J是一个日志抽象层,它为各种日志框架(如Log4j、Logback等)提供了一个统一的接口。SLF4J允许开发者在部署时自由选择底层的日志实现,只需在项目中引入相应日志框架的绑定即可。这样,项目的日志配置可以根据...
总结来说,Spring框架依赖于外部的日志组件,如Log4j、Logback或SLF4J,通过这些组件来实现日志记录。开发者可以根据项目需求选择合适的日志系统,并通过配置文件进行详细设置,以满足不同级别的日志记录和管理需求...
要将Spring项目中的Log4j替换为Logback,首先删除或注释掉与Log4j相关的依赖,如`log4j.properties`或`log4j.xml`。然后,在`pom.xml`(如果是Maven项目)或`build.gradle`(如果是Gradle项目)中添加Logback依赖。...
SLF4J 提供了一个统一的日志记录接口,允许开发者选择不同的日志记录实现,如 Logback、Log4j、Java Util Logging 等。 在 Spring Boot 中,logback 是最优先的选择,提供了一套默认的日志配置。通过配置 logback....