1. 程式人生 > >spirngMVC如何在專案中列印異常日誌+springmvc事務控制詳解

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>


相關推薦

spirngMVC如何在專案列印異常日誌+springmvc事務控制

首先 service層的增、刪、改操作前要加註解@Transactonal,如下   @Transactional public void saveErpProductType(ErpProduc

springmvc事務管理

spring可以支援程式設計式事務和宣告式事務。 Spring使用事務管理器,每個不同平臺的事務管理器都實現了介面:PlatformTransactionManager 此介面是事務管理的核心,提供了三個需要實現的函式: [java] v

java專案異常處理

java專案中的常用的異常處理情況 1)為可恢復的錯誤使用檢查型異常,為程式設計錯誤使用非檢查型錯誤。   選擇檢查型還是非檢查型異常,對於Java程式設計人員來說,總是讓人感到困惑。檢查型異常保證你對錯誤條件提供異常處理程式碼,這是一種從語言到強制你編'寫健壯的程式碼的一種方式,但同時會引入大量

java WEB專案異常處理(好文章連結)

http://blog.csdn.net/luqin1988/article/details/7970455 http://blog.csdn.net/luqin1988/article/details/7970782 http://blog.csdn.net/luq

Spring-Web專案異常處理

前言 異常體系在任何計算機語言中都有著重要的分量,但是對於普通開發者來說總是存在著多多少少的疑問:什麼時候使用異常?什麼時候要對異常進行統一處理?該如何對異常進行統一處理? 這裡,我將把我們後臺系統的異常處理機制的演變過程進行闡釋。 分散式處理 大家

Java EE專案異常處理 (實在寫的太好了,導致我非法轉載!!!)

為什麼要在J2EE專案中談異常處理呢?可能許多java初學者都想說:“異常處理不就是try….catch…finally嗎?這誰都會啊!”。筆者在初學java時也是這樣認為的。如何在一個多層的j2ee專案中定義相應的異常類?在專案中的每一層如何進行異常處理?異常何時被丟擲

Maven專案spring異常之CannotLoadBeanClassException

(注:此異常發生在全註解開發下)      異常釋義:此異常意為無法載入xml檔案中配置的bean。      產生機制:當maven專案開始執行的時候,會根據@Autowired註解,載入被註解

JVM解惑:消失的異常堆疊,log列印異常堆疊為空

正常郵件是這樣的: 生產環境拋異常,但卻沒有將堆疊資訊輸出到日誌,確認列印日誌方法正確logger.error("somthing error", ex),發現這個日誌捕捉了NullPointerException,但是沒有異常堆疊資訊,只有java.lang.

Java EE專案異常處理總結(一篇不得不看的文章)

什麼是異常?執行時發生的可被捕獲和處理的錯誤。這篇文章主要介紹了Java EE專案中的異常處理總結,有需要的可以瞭解一下。 為什麼要在J2EE專案中談異常處理呢?可能許多java初學者都想說:“異常處理不就是try….catch…finally嗎?這誰都會啊!”。筆者在

web專案如何選擇日誌元件(SLF4J、Log4J2、logback)

一:SLF4J、Log4J2、logback、Apache log4j元件簡介slf4j譯為簡單日誌門面,是日誌框架的抽象。LogBack和Log4j都是開源日記工具庫,LogBack是Log4j的改良版本,比Log4j擁有更多的特性,同時也帶來很大效能提升。詳細資料可參照下

Net Core數據庫事務隔離——以Dapper和Mysql為例

事務 ring 增刪改 tostring 測試 stc efault 多個 log Net Core中數據庫事務隔離詳解——以Dapper和Mysql為例 事務隔離級別 準備工作 Read uncommitted 讀未提交 Read committed 讀取提交內

Spring --15.Spring基於xml的宣告事務控制

開發環境: jdk1.8 Idea 2017 :Maven工程、引入父工程 Tomcat:apache-tomcat-8 Spring:5.0.7 一、事務控制 1、概述 事務的概念: 事務是邏輯上一組操作、組成這組操作各個邏輯單元、要麼一起成功、要麼一起失敗。 事

Spring七種Propagation類的事務屬性

       在宣告式的事務處理中,要配置一個切面,其中就用到了propagation,表示打算對這些方法怎麼使用事務,是用還是不用,其中propagation有七種配置,REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT

Spring架構---Spring事務管理

Spring中的事務管理詳解 1. 事務簡介: 事務管理是企業級應用程式開發中必不可少的技術,用來確保資料的完整性和一致性 事務就是一系列的動作,它們被當作一個單獨的工作單元。這些動作要麼全部完成,要麼全部不起作用 2. 事務的四個關鍵屬性(ACID) ① 原子性(atomici

JavaEE開發之SpringMVC的路由配置及引數傳遞

在之前我們使用Swift的Perfect框架來開發服務端程式時,聊到了Perfect中的路由配置。而在SpringMVC中的路由配置與其也是大同小異的。說到路由,其實就是將URL對映到Java的具體類中的具體方法,或者對映到具體的JSP檔案上。本篇部落格主要就闡述瞭如何在SpringMVC中配置路由以及RES

Net Core資料庫事務隔離——以Dapper和Mysql為例

原文: Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 事務隔離級別 準備工作 Read uncommitted 讀未提交 Read

Java事務總結(精華)

1.什麼是JAVA事務? 通常的觀念認為,事務僅與資料庫相關。 事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性 (isolation)和永續性(durability)的縮寫。 事務的原子性:表示事務執行過程中的任何失敗都將

springservice呼叫service的事務控制

    在使用SPRING的事務控制時,事務一般都是加在SERVICE層的,這個時候如果一個SERVICE呼叫另一個 SERVICE時有可能會出現事務控制問題,比如第二個SERVICE丟擲了異常,第一個SERVICE卻正常提交了, 比如下面這個例子: 事務配置 <t

關於在 vue專案對echarts圖表的一些控制(及陣列物件去重)

1.利用replace對後臺返回的json資料做替換處理 (不管是多麼複雜的資料結構,都可以利用這樣的方法去全部匹配) var json = [{'real-name':'lolo'},{'real-name':'abc'},{'real-name':'

java異常與try catch finally(轉載)

簡介程式執行時,發生的不被期望的事件,它阻止了程式按照程式設計師的預期正常執行,這就是異常。異常發生時,是任程式自生自滅,立刻退出終止,還是輸出錯誤給使用者?或者用C語言風格:用函式返回值作為執行狀態?。Java提供了更加優秀的解決辦法:異常處理機制。異常處理機制能讓程式在異