1 /*
2  * JBoss, Home of Professional Open Source.
3  *
4  * Copyright 2013 Red Hat, Inc.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 package org.jboss.logging;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.apache.logging.log4j.ThreadContext;
25
26 final class Log4j2LoggerProvider implements LoggerProvider {
27
28     @Override
29     public Log4j2Logger getLogger(String name) {
30         return new Log4j2Logger(name);
31     }
32
33     @Override
34     public void clearMdc() {
35         ThreadContext.clearMap();
36     }
37
38     @Override
39     public Object putMdc(String key, Object value) {
40         try {
41             return ThreadContext.get(key);
42         } finally {
43             ThreadContext.put(key, String.valueOf(value));
44         }
45     }
46
47     @Override
48     public Object getMdc(String key) {
49         return ThreadContext.get(key);
50     }
51
52     @Override
53     public void removeMdc(String key) {
54         ThreadContext.remove(key);
55     }
56
57     @Override
58     public Map<String, Object> getMdcMap() {
59         return new HashMap<String, Object>(ThreadContext.getImmutableContext());
60     }
61
62     @Override
63     public void clearNdc() {
64         ThreadContext.clearStack();
65     }
66
67     @Override
68     public String getNdc() {
69         return ThreadContext.peek();
70     }
71
72     @Override
73     public int getNdcDepth() {
74         return ThreadContext.getDepth();
75     }
76
77     @Override
78     public String popNdc() {
79         return ThreadContext.pop();
80     }
81
82     @Override
83     public String peekNdc() {
84         return ThreadContext.peek();
85     }
86
87     @Override
88     public void pushNdc(String message) {
89         ThreadContext.push(message);
90     }
91
92     @Override
93     public void setNdcMaxDepth(int maxDepth) {
94         ThreadContext.trim(maxDepth);
95     }
96 }
97