2 * Copyright (c) 2011-2016, JANET(UK)
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of JANET(UK) nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 public MoonshotLogger get_logger(string name) {
35 return new MoonshotLogger(name);
41 static void glib_default_log_handler(string? log_domain, LogLevelFlags log_level, string message)
43 Log4Vala.Logger logger = Log4Vala.Logger.get_logger(log_domain ?? "Glib");
44 stderr.printf(log_level.to_string() + " : " + message ?? "" + "\n");
45 logger.error("Glib error level: " + log_level.to_string() + " : " + (message ?? ""));
48 /** Logger class that wraps the Log4Vala logger */
49 public class MoonshotLogger : Object {
50 static bool logger_is_initialized = false;
52 private Log4Vala.Logger logger;
54 public MoonshotLogger(string name) {
55 if (!logger_is_initialized) {
56 Log.set_default_handler(glib_default_log_handler);
59 // Look for config file in the app's current directory.
60 string conf_file = "log4vala.conf";
62 string conf_file = GLib.Environment.get_variable("MOONSHOT_UI_LOG_CONFIG");
64 Log4Vala.init(conf_file);
65 logger_is_initialized = true;
68 logger = Log4Vala.Logger.get_logger(name);
72 * Log a trace message.
73 * @param message log message
74 * @param e optional Error to be logged
76 public void trace(string message, Error? e = null) {
77 logger.trace(message, e);
82 * Log a debug message.
83 * @param message log message
84 * @param e optional Error to be logged
86 public void debug(string message, Error? e = null) {
87 logger.debug(message, e);
92 * Log an info message.
93 * @param e optional Error to be logged
95 public void info(string message, Error? e = null) {
96 logger.info(message, e);
100 * Log a warning message.
101 * @param message log message
102 * @param e optional Error to be logged
104 public void warn(string message, Error? e = null) {
105 logger.warn(message, e);
109 * Log an error message.
110 * @param message log message
111 * @param e optional Error to be logged
113 public void error(string message, Error? e = null) {
114 logger.error(message, e);
118 * Log a fatal message.
119 * @param message log message
120 * @param e optional Error to be logged
122 public void fatal(string message, Error? e = null) {
123 logger.fatal(message, e);
130 /** Logger that currently does nothing, but may eventually write to stdout or a file if enabled */
131 public class MoonshotLogger : Object {
133 internal MoonshotLogger(string name) {
137 * Log a trace message.
138 * @param message log message
139 * @param e optional Error to be logged
141 public void trace(string message, Error? e = null) {
146 * Log a debug message.
147 * @param message log message
148 * @param e optional Error to be logged
150 public void debug(string message, Error? e = null) {
155 * Log an info message.
156 * @param e optional Error to be logged
158 public void info(string message, Error? e = null) {
162 * Log a warning message.
163 * @param message log message
164 * @param e optional Error to be logged
166 public void warn(string message, Error? e = null) {
170 * Log an error message.
171 * @param message log message
172 * @param e optional Error to be logged
174 public void error(string message, Error? e = null) {
178 * Log a fatal message.
179 * @param message log message
180 * @param e optional Error to be logged
182 public void fatal(string message, Error? e = null) {