spirngMVC如何在项目中打印异常日志+springmvc事务控制详解

首先 service层的增、删、改操作前要加注解@Transactonal,如下  

@Transactional
	public void saveErpProductType(ErpProductType erpProductType) {
		erpProductTypeDao.saveOrUpdate(erpProductType);
	}
这样,当此方法出现异常时,会抛出异常,在Controller层捕获,此时,在Controller层就需要用try和catch处理,使数据库不不发生事务,如下


private static final Logger log = Logger.getLogger(ProductTypeAction.class);//括号里ProductTypeAction.class是当前Controller类

@RequiresPermissions(value = { "1465801690631" })
	@RequestMapping(value = "/saveProductType")
	public ModelAndView validateTypeName(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 类型
		ErpProductType erpProductType = new ErpProductType();
		String typeName = request.getParameter("typeName").trim();
		erpProductType.setTypeCode(erpProductTypeService.getMaxProductTypeFromMemory());
		erpProductType.setTypeName(typeName);
		ErpUser loginUser = (ErpUser) request.getSession().getAttribute(Constant.USER);
		String marketNo = loginUser.getMarketNo();
		try {
			erpProductTypeService.saveErpProductType(erpProductType); // 存入数据库
			LoadOnStartService.erpProductTypeTable.put(erpProductType.getId(), erpProductType); // 更新内存
			LoadOnStartService.refreshMarketDataTable(marketNo, Constant.ONE);
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("msg", "保存成功");
			response.getWriter().write(jsonObject.toString());
			return null;
		} catch (Exception e) {
			log.info(e.getMessage());
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("msg", "保存失败");
			response.getWriter().write(jsonObject.toString());
			return null;
		}
	}

另外,就是log的配置文件了,如下是xml方式,网上还有propertis的配置方式

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<!-- 根logger的设置 OFF,ERROR,WARN,INFO,DEBUG -->
	<root>
		<priority value="INFO" />
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="myFile" />
	</root>


	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%d - %c -%-4r [%t] %-5p %x - %m%n" />
		</layout>

		<!--限制输出级别-->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMax" value="ERROR" />
			<param name="LevelMin" value="TRACE" />
		</filter>
	</appender>

	<appender name="myFile"
		class="org.apache.log4j.DailyRollingFileAppender">
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="info" />
			<param name="levelMax" value="error" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
		<param name="File" value="${erp.root}/logs/today.log" /><!-- 设置日志输出文件名 -->
		<param name="Append" value="true" />
		<param name="DatePattern" value="'.'yyyy-MM-dd" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c] %m%n" />
		</layout>
	</appender>


</log4j:configuration>


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值