1 | /* |
2 | * Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0, |
3 | * and the EPL 1.0 (http://h2database.com/html/license.html). |
4 | * Initial Developer: H2 Group |
5 | */ |
6 | package org.h2.message; |
7 | |
8 | import org.slf4j.Logger; |
9 | import org.slf4j.LoggerFactory; |
10 | |
11 | /** |
12 | * This adapter sends log output to SLF4J. SLF4J supports multiple |
13 | * implementations such as Logback, Log4j, Jakarta Commons Logging (JCL), JDK |
14 | * 1.4 logging, x4juli, and Simple Log. To use SLF4J, you need to add the |
15 | * required jar files to the classpath, and set the trace level to 4 when |
16 | * opening a database: |
17 | * |
18 | * <pre> |
19 | * jdbc:h2:˜/test;TRACE_LEVEL_FILE=4 |
20 | * </pre> |
21 | * |
22 | * The logger name is 'h2database'. |
23 | */ |
24 | public class TraceWriterAdapter implements TraceWriter { |
25 | |
26 | private String name; |
27 | private final Logger logger = LoggerFactory.getLogger("h2database"); |
28 | |
29 | @Override |
30 | public void setName(String name) { |
31 | this.name = name; |
32 | } |
33 | |
34 | @Override |
35 | public boolean isEnabled(int level) { |
36 | switch (level) { |
37 | case TraceSystem.DEBUG: |
38 | return logger.isDebugEnabled(); |
39 | case TraceSystem.INFO: |
40 | return logger.isInfoEnabled(); |
41 | case TraceSystem.ERROR: |
42 | return logger.isErrorEnabled(); |
43 | default: |
44 | return false; |
45 | } |
46 | } |
47 | |
48 | @Override |
49 | public void write(int level, String module, String s, Throwable t) { |
50 | if (isEnabled(level)) { |
51 | if (name != null) { |
52 | s = name + ":" + module + " " + s; |
53 | } else { |
54 | s = module + " " + s; |
55 | } |
56 | switch (level) { |
57 | case TraceSystem.DEBUG: |
58 | logger.debug(s, t); |
59 | break; |
60 | case TraceSystem.INFO: |
61 | logger.info(s, t); |
62 | break; |
63 | case TraceSystem.ERROR: |
64 | logger.error(s, t); |
65 | break; |
66 | default: |
67 | } |
68 | } |
69 | } |
70 | |
71 | } |