View Javadoc
1   /**************************************************************************
2    *
3    * Copyright (c) 2015-2020 Yawg project contributors.
4    *
5    **************************************************************************/
6   
7   package com.varmateo.yawg.logging;
8   
9   import java.util.logging.Level;
10  import java.util.logging.LogRecord;
11  import java.util.logging.Logger;
12  
13  
14  /**
15   * A <code>Log</code> implementation using Java <code>Logger</code>
16   * instances. Intended for private use of package
17   * com.varmateo.yawg.logging.
18   */
19  /* default */ final class LoggerLog
20          implements Log {
21  
22  
23      private final Logger _logger;
24  
25  
26      /**
27       *
28       */
29      /* default */ LoggerLog(final Logger logger) {
30  
31          _logger = logger;
32      }
33  
34  
35      /**
36       * Retrieves the underlying Java <code>Logger</code> that is being
37       * used as output.
38       *
39       * @return The Java <code>Logger</code> underlying this
40       * <code>LoggerLog</code>.
41       */
42      public Logger getLogger() {
43  
44          return _logger;
45      }
46  
47  
48      /**
49       * @return The current log level.
50       */
51      public Level getLevel() {
52  
53          return (_logger == null) ? Level.OFF : _logger.getLevel();
54      }
55  
56  
57      /**
58       * Log a WARNING message.
59       *
60       * @param msg The message to be logged.
61       */
62      @Override
63      public void warning(final String msg) {
64  
65          log(Level.WARNING, msg, null);
66      }
67  
68  
69      /**
70       * Log a WARNING message.
71       *
72       * @param msg The log message format.
73       *
74       * @param fmtArgs Formating arguments used when generating the
75       * actual message that is logged.
76       */
77      @Override
78      public void warning(
79              final String    msg,
80              final Object... fmtArgs) {
81  
82          log(Level.WARNING, msg, fmtArgs);
83      }
84  
85  
86      /**
87       * Log a WARNING message.
88       *
89       * @param error The exception associated with the log message.
90       *
91       * @param msg The log message format.
92       *
93       * @param fmtArgs Formating arguments used when generating the actual
94       * message that is logged.
95       */
96      @Override
97      public void warning(
98              final Throwable error,
99              final String    msg,
100             final Object... fmtArgs) {
101 
102         log(Level.WARNING, error, msg, fmtArgs);
103     }
104 
105 
106     /**
107      * Log a INFO message.
108      *
109      * @param msg The message to be logged.
110      */
111     @Override
112     public void info(final String msg) {
113 
114         log(Level.INFO, msg, null);
115     }
116 
117 
118     /**
119      * Log a INFO message.
120      *
121      * @param msg The log message format.
122      *
123      * @param fmtArgs Formating arguments used when generating the
124      * actual message that is logged.
125      */
126     @Override
127     public void info(
128             final String    msg,
129             final Object... fmtArgs) {
130 
131         log(Level.INFO, msg, fmtArgs);
132     }
133 
134 
135     /**
136      * Log a DEBUG message.
137      *
138      * @param msg The message to be logged.
139      */
140     @Override
141     public void debug(final String msg) {
142 
143         log(Level.FINE, msg, null);
144     }
145 
146 
147     /**
148      * Log a DEBUG message.
149      *
150      * @param msg The log message format.
151      *
152      * @param fmtArgs Formating arguments used when generating the
153      * actual message that is logged.
154      */
155     @Override
156     public void debug(
157             final String    msg,
158             final Object... fmtArgs) {
159 
160         log(Level.FINE, msg, fmtArgs);
161     }
162 
163 
164     /**
165      *
166      */
167     private void log(
168             final Level    level,
169             final String   msg,
170             final Object[] fmtArgs) {
171 
172         if ( _logger != null ) {
173             _logger.log(level, msg, fmtArgs);
174         }
175     }
176 
177 
178     /**
179      *
180      */
181     private void log(
182             final Level     level,
183             final Throwable error,
184             final String    msg,
185             final Object[]  fmtArgs) {
186 
187         if ( _logger != null ) {
188             final LogRecord logRecord = new LogRecord(level, msg);
189 
190             logRecord.setThrown(error);
191             logRecord.setParameters(fmtArgs);
192             _logger.log(logRecord);
193         }
194     }
195 
196 
197 }