freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

log4j2中文手冊(編輯修改稿)

2025-07-26 08:37 本頁面
 

【文章內(nèi)容簡介】 pening connection to {}..., someDataSource)。4. (, Logging in user %1$s with birthday %2$tm %2$te,%2$tY, (), ())。(5) Java 8 lambda support for lazy logging,Logger 支持了lambda 表達式,在請求日志級別啟動的時候,可以懶加載的打印這些信息而不用去顯式檢查日志是否要打印。例如, 在以前版本中可能這樣寫 :1. // preJava 8 style optimization: explicitly check the log level2. // to make sure the expensiveOperation() method is only called if necessary3. if (()) {4. (Some longrunning operation returned {}, expensiveOperation())。5. }在java8 中可以使用 lambda 表達式實現(xiàn)相同的效果,你可以不用顯式的檢查日志級別了:1. // Java8 style optimization: no need to explicitly check the log level:2. // the lambda expression is not evaluated if the TRACE level is not enabled3. (Some longrunning operation returned {}, () expensiveOperation())。(6) Logger Names大部分日志實現(xiàn)使用為了使得 日志名稱與日志配置匹配 使用一個分層的名稱方案。在這個方案中Logger 的名稱是由 . 分隔的, 非常類似于 java 包名的層次。 例如 : 是 與 的父層。大多數(shù)情況下,應(yīng)用命名他們的日志名稱 是通過在 中傳入當前類名實現(xiàn)的。因為這個用法太常見,Log4j2在入?yún)榭栈蛘邆魅霝镹ull 的時候默認是提供當前類的名稱。 例如, 下面的例子的 Logger 的名稱都是 1. package 。2. 3. public class MyTest {4. private static final Logger logger =()。5. }1. package 。2. 3. public class MyTest {4. private static final Logger logger =(())。5. }1. package 。2. 3. public class MyTest {4. private static final Logger logger = ()。5. }1. Flow TracingLogger 類提供了針對跟蹤應(yīng)用執(zhí)行路徑的很有用的方法 。這些方法可以從debug 日志中產(chǎn)生可以單獨 過濾的logging events。以下情況鼓勵使用這些方法:(1) 在不需要DEBUG的開發(fā)中幫助診斷問題(2) 在不需要DEBUG 的生產(chǎn)中幫助診斷問題。(3) 幫助新的開發(fā)人員在應(yīng)用中學習使用。最常用的2個方法是 entry() 與 exit() 。 entry() 一般置于方法的開頭,entry() 可以傳入04 個參數(shù),通常是傳入方法變量, entry() 方法的日志級別是 TRACE ,并且使用了一個名為 ENTER 的 Marker。 這也是一個FLOW Markerexit() 放置在方法的結(jié)束或者方法的返回前,exit() 可以傳入 1個參數(shù)或者不傳入?yún)?shù), 通常 void 方法不傳入?yún)?shù), 而返回一個Object的方法使用 exit(Object obj) 。 exit()方法使用 TRACE的日志級別,并且使用了一個名為 EXIT 的Marker 。throwing() 方法 一般在應(yīng)用拋出一個不太可能處理的異常時使用。類似 RuntimeException 。 這個方法使用了 ERROR 的日志級別。catching() 方法使用在捕獲一個異常,但是不會拋出的時候, 這個方法使用了 ERROR的日志級別。,下面的例子展示了這些方法的典型使用:1. package 。2. 3. import 。4. import 。5. 6. import 。7. 8. public class TestService {9. private Logger logger = (())。10. 11. private String[] messages = new String[] {12. Hello, World,13. Goodbye Cruel World,14. You had me at hello15. }。16. private Random rand = new Random(1)。17. 18. public String retrieveMessage() {19. ()。20. 21. String testMsg = getMessage(getKey())。22. 23. return (testMsg)。24. }25. 26. public void exampleException() {27. ()。28. try {29. String msg = messages[]。30. (An exception should have been thrown)。31. } catch (Exception ex) {32. (ex)。33. }34. ()。35. }36. 37. public String getMessage(int key) {38. (key)。39. 40. String value = messages[key]。41. 42. return (value)。43. }44. 45. private int getKey() {46. ()。47. int key = ()。48. return (key)。49. }50. }測試程序的調(diào)用 :1. package 。2. 3. public class App {4. 5. public static void main( String[] args ) {6. TestService service = new TestService()。7. ()。8. ()。9. ()。10. }11. }日志配置文件 :1. ?xml version= encoding=UTF8?2. Configuration status=error3. Appenders4. Console name=Console target=SYSTEM_OUT5. ThresholdFilter level=ERROR onMatch=ACCEPT onMismatch=DENY/6. ! Flow tracing is most useful with a pattern that shows location.7. Below pattern outputs class, line number and method name. 8. PatternLayout pattern=%d{HH:mm:} %5level %class{36} %L %M %msg%xEx%n/9. /Console10. File name=log fileName=target/ append=false11. PatternLayout pattern=%d{HH:mm:} %5level %class{36} %L %M %msg%xEx%n/12. /File13. /Appenders14. Loggers15. Root level=trace16. AppenderRef ref=log/17. /Root18. /Loggers19. /Configuration2. Markers日志記錄框架的主要目的之一是在需要的時候提供一種方法來生成調(diào)試和診斷信息。并且可以對這些信息進行過濾,以使不會壓垮系統(tǒng)或者需要使用它的人,例如:應(yīng)用需要打印 入口,出口,和分別執(zhí)行的SQL語句,并且希望能夠分開 查詢和 更新語句 :1. import 。2. import 。3. import 。4. 5. public class MyApp {6. 7. private Logger logger = (())。8. private static final Marker SQL_MARKER = (SQL)。9. private static final Marker UPDATE_MARKER = (SQL_UPDATE).set(SQL_MARKER)。10. private static final Marker QUERY_MARKER = (SQL_QUERY).set(SQL_MARKER)。11. 12. public String doQuery(String table) {13. (param)。14. 15. (QUERY_MARKER, SELECT * FROM {}, table)。16. 17. return ()。18. }19. 20. public String doUpdate(String table, MapString, String params) {21. (param)。22. 23. if (()) {24. (UPDATE_MARKER, UPDATE {} SET {}, table, formatCols())。25. 26. return ()。27. }28. 29. private String formatCols(MapString, String cols) {30. StringBuilder sb = new StringBuilder()。31. boolean first = true。32. for (String, String entry : ()) {33. if (!first) {34. (, )。35. }36. (()).append(=).append(())。37. first = false。38. }39. return ()。40. }41. }在上面的例子中,可以通過添加 MarkerFilters 來打印query 的日志, update的日志, 或者所有的日志 。在使用Markers有一些重要規(guī)則(1) Markers 必須是唯一的。他們是不可變的注冊名稱,要確保你的應(yīng)用中的Markers都是不同的。(2) 父 Markers 可以被動態(tài)的添加或者移除,但是這個操作是很昂貴的,建議在第一次獲得Markers時就確定父 Markers。(3) 恰當?shù)脑O(shè)置父類 Markers。3. EventLoggerEventLogger 類提供了一個在應(yīng)用中產(chǎn)生 logging events 的簡單機制。 EventLogger 是初始化 日志審計系統(tǒng)中事件的一個很有用的方式。 一個推薦的使用方法是在 WEB application 環(huán)境中, 可以使用request 中的內(nèi)容填充 ThreadContext Map, 例如 用戶ID,用戶的IP地址, 產(chǎn)品名稱等。這可以在一個 servlet filter 中很簡單的實現(xiàn), 并且在request 的結(jié)尾,ThreadContext Map 將被清除。1. import 。2. import 。3. 4. import 。5. import 。6. import 。7. import 。8. import 。9. import 。10. import 。11. import 。12. import 。13. import 。14. import 。15. import 。16. 17. public class RequestFilter implements Filter {18. private FilterConfig filterConfig。19. private static String TZ_NAME = timezoneOffset。20. 21. public void init(FilterConfig filterConfig) throws ServletException {22. = filterConfig。23. }24. 25. /**26. * Sample filter that populates the MDC on every request.27. */28. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, Filter
點擊復制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1