`
knight_black_bob
  • 浏览: 859934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring log 日志管理

阅读更多

 

 

 

import java.util.Map;

import javax.annotation.Resource;

import org.aspectj.lang.ProceedingJoinPoint;
/**
 * Logger
 */
public class Logger {
	
	@Resource
	private LogService logService ;
	public Object record(ProceedingJoinPoint pjp){
		Log log = new Log();
		try {
			ActionContext ac = ActionContext.getContext(); 
			if(ac != null){
				Map<String, Object> session = ac.getSession();
				if(session != null){
					User user = (User) session.get("user");
					if(user != null){
						log.setOperator("" + user.getId() + ":" + user.getEmail());
					}
				}
			} 
			String mname = pjp.getSignature().getName();
			log.setOperName(mname); 
			Object[] params = pjp.getArgs();
			log.setOperParams(StringUtil.arr2Str(params)); 
			Object ret = pjp.proceed(); 
			log.setOperResult("success"); 
			if(ret != null){
				log.setResultMsg(ret.toString());
			}
			return ret ;
		} catch (Throwable e) {
			log.setOperResult("failure");
			log.setResultMsg(e.getMessage());
		}
		finally{
			logService.saveEntity(log);
		}
		return null ;
	}
}

 

 

<!-- 日志记录仪 -->	
	<bean id="logger" class="com.surveypark.advice.Logger" />
	
	<!-- aop配置 -->	
	<aop:config>
		<!-- 事务切入点通知 -->
		<aop:advisor advice-ref="txAdvice" pointcut="execution(* *..*Service.*(..))" order="2"/>
		
		<!-- 缓存切入点通知 -->
		<aop:advisor advice-ref="cacheAdvice" pointcut="execution(* *..*Service.*(..))" order="0"/>
		
		<!-- Logger切面 -->
		<aop:aspect id="loggerAspect" ref="logger" order="1">
			<aop:around method="record" pointcut="(execution(* *..*Service.save*(..)) 
											or execution(* *..*Service.update*(..)) 
											or execution(* *..*Service.delete*(..)) 
											or execution(* *..*Service.batch*(..)) 
											or execution(* *..*Service.new*(..)) 
											or execution(* *..*Service.move*(..)) 
											or execution(* *..*Service.clear*(..)) 
											or execution(* *..*Service.toggle*(..)))
											and !bean(logService)
											 "/>
		</aop:aspect>
	</aop:config>

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 任务明细bean -->
	<bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
		<!-- 通过任务类指定石英任务 -->
		<property name="jobClass" value="com.surveypark.scheduler.CreateLogTablesTask" />
		<property name="jobDataMap">
			<map>
				<entry key="logService" value-ref="logService" />
			</map>
		</property>
	</bean>
	
	<!-- cron触发器bean,设置石英任务的调度策略 -->
	<bean id="cronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="jobDetailBean" />
		<!-- cron表达式 -->
		<property name="cronExpression">
			<value>0 19 10 3 * ?</value>
		</property>
	</bean>
	
	<!-- 调度工厂bean,激活触发器运行 -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTriggerBean"/>
			</list>
		</property>
	</bean>
</beans>

 

public class CreateLogTablesTask extends QuartzJobBean {

	
	private LogService logService ; 
	public void setLogService(LogService logService) {
		this.logService = logService;
	}
 
	protected void executeInternal(JobExecutionContext arg0)
			throws JobExecutionException { 
		String tableName = LogUtil.generateLogTableName(1 );
		logService.createLogTable(tableName);
		 
		tableName = LogUtil.generateLogTableName(2);
		logService.createLogTable(tableName);
		 
		tableName = LogUtil.generateLogTableName(3);
		logService.createLogTable(tableName);
	}
}

  

public void createLogTable(String tableName){
		String sql = "create table if not exists " +tableName + " like logs" ;
		this.executeSQL(sql);
	}

  

 

 

public class LogUtil {
	 
	public static String generateLogTableName(int offset){
		Calendar c = Calendar.getInstance();
		// 2013
		int year = c.get(Calendar.YEAR);
		// 0 -11
		int month = c.get(Calendar.MONTH) + 1 + offset;
		
		if(month > 12){
			year ++ ;
			month = month - 12 ;
		}
		if(month < 1){
			year -- ;
			month = month + 12 ;
		}
		DecimalFormat df = new DecimalFormat();
		df.applyPattern("00");
		return "logs_" + year + "_" + df.format(month) ;
	}
}

 

public void saveEntity(Log t) {
		//insert into logs_2013_9()
		String sql = "insert into " 
				+ LogUtil.generateLogTableName(0) 
				+ "(id,operator,opername,operparams,operresult,resultmsg,opertime) "
				+ "values(?,?,?,?,?,?,?)" ;
		UUIDHexGenerator uuid = new UUIDHexGenerator();
		String id = (String) uuid.generate(null, null);
		this.executeSQL(sql, id,
							t.getOperator(),
							t.getOperName(),
							t.getOperParams(),
							t.getOperResult(),
							t.getResultMsg(),
							t.getOperTime());
	}

  

   

  

 

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    spring简单注解+log4j记录日志

    综上所述,"spring简单注解+log4j记录日志"这个主题涵盖了Spring框架中的注解使用、Log4j日志系统以及AOP的应用。通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在...

    spring日志配置为log4j

    Spring框架作为一个广泛应用的Java企业级应用开发框架,提供了一种灵活的日志配置机制,允许开发者选择不同的日志实现,如Log4j、Logback等。本篇将详细介绍如何在Spring项目中配置日志系统为Log4j。 首先,我们要...

    spring hibernate 日志管理插件

    日志管理:通过统一的日志管理器处理功能日志与数据日志关联。提供数据身份标识接口,满足针对表及身份联合查询对照。 日志记录:以JSON格式输出日志,通过log4j配置日志文件输出方式。 日志查询:提供servlet...

    spring ext 日志管理和导出excel

    在“spring ext 日志管理和导出excel”这个主题中,我们将深入探讨如何利用Spring扩展功能来实现日志管理以及Excel数据导出。 首先,日志管理是任何应用程序的基础部分,它帮助开发者跟踪系统行为、调试问题并记录...

    spring log4j 实例

    Spring框架是Java领域广泛使用的轻量级框架,而Log4j则是日志记录领域的经典工具,提供了丰富的日志配置和管理功能。本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何...

    spring注解管理日志

    当涉及到日志管理时,Spring提供了多种方式来帮助开发者轻松记录应用程序的运行时信息。本篇将详细介绍如何利用Spring注解进行日志管理,以及如何获取操作的详细信息。 首先,让我们了解Spring中用于日志管理的主要...

    spring整合log4j

    Spring框架作为Java企业级应用开发的首选,而Log4j则是广泛使用的日志记录工具,两者结合可以提供强大的日志管理能力。下面将详细阐述"spring整合log4j"的相关知识点。 首先,Log4j是Apache的一个开源项目,它为...

    Spring的log4j以及配置文件

    而日志管理是任何应用程序的关键组成部分,它有助于追踪错误、调试代码以及监控系统性能。在Spring框架中,我们通常会结合使用Log4j来实现日志记录,因为Log4j具有高度可配置性、性能优秀和功能丰富的特点。 Log4j...

    spring框架和log4j日志用到的jar包

    在Spring框架中,可以通过Spring的Log4j配置来统一管理日志,方便调试和问题排查。 在提供的文件名称列表中,虽然没有具体的jar包名称,但通常Spring框架所需的jar包包括:spring-core、spring-context、spring-...

    Spring Aop+Log4j 动态日志

    Spring AOP是Spring框架的一个重要特性,它允许我们以一种声明式的方式处理横切关注点,如日志、事务管理等。AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入...

    springmvc log4j2 logback 注解 jackson 日志脱敏实现源码

    本资源包含的是关于`SpringMVC`、`Log4j2`、`Logback`以及`Jackson`的日志脱敏实现源码,提供了多种实现方式,旨在帮助开发者在保障信息安全的同时,充分利用日志进行系统分析。 1. **基于正则表达式的日志脱敏实现...

    springMVC 日志配置 限制log4j 输出文件大小

    实际项目中经常会用到日志打印 为避免日志打印输出文件过大 消耗服务器内存 需要限制大小

    Spring+Spring依赖jar包+Spring日志

    关于日志,Spring框架本身并不直接提供日志功能,但它支持多种日志框架,如Log4j、Java Util Logging和SLF4J。在使用Spring时,你需要添加对应日志框架的jar包,例如`log4j.jar`或`slf4j-api.jar`以及相应的实现库,...

    idea 控制台log日志颜色修改

    "idea 控制台log日志颜色修改"这个主题,正是关于如何通过GrepConsole插件在IDEA中自定义控制台日志的颜色,以便更直观地识别和分析不同类型的日志信息。 GrepConsole是一款非常实用的IDEA插件,它允许用户根据日志...

    日志组件(spring依赖)

    在Spring框架中,日志管理是一个关键的组成部分,它支持多种日志实现,如Log4j、Logback和Java内置的日志API等。本篇文章将深入探讨Spring框架对日志组件的依赖和如何配置与使用这些日志系统。 首先,Spring框架...

    log4j与spring的详细配置。

    综上所述,Log4j与Spring的整合使得日志管理更加便捷,同时,Log4j丰富的配置选项和强大的功能使其成为Java日志处理的首选工具。理解并熟练运用Log4j配置,能够极大地提升开发效率和问题排查能力。在实际开发中,...

    spring-boot-starter-log4j2

    《深入理解Spring Boot Starter Log4j2》 ...通过合理配置,我们可以实现灵活的日志管理,满足各种开发场景的需求。在实际开发中,掌握Log4j2的配置和使用,能帮助我们更好地追踪问题,提升项目的可维护性。

    Log4net在Spring.net中的管理应用实例

    在Spring.NET中整合Log4net,可以实现日志管理的自动化,使日志配置更加灵活,同时也便于维护和扩展。 首先,我们需要了解Log4net的基本概念。Log4net提供不同级别的日志记录,包括DEBUG、INFO、WARN、ERROR和FATAL...

    spring log4j配置文件资料

    总结来说,Spring 和 Log4j 的整合使得我们能够在 Spring 应用程序中方便地管理和控制日志,同时通过配置 Log4j 文件,可以针对性地获取 Hibernate 和 Proxool 的运行信息,对于开发和维护高质量的 Java 应用程序...

Global site tag (gtag.js) - Google Analytics