1/* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5"use strict"; 6 7ChromeUtils.import("resource://gre/modules/Log.jsm"); 8 9var EXPORTED_SYMBOLS = ["LogManager"]; 10 11const ROOT_LOGGER_NAME = "app.normandy"; 12let rootLogger = null; 13 14var LogManager = { 15 /** 16 * Configure the root logger for the Recipe Client. Must be called at 17 * least once before using any loggers created via getLogger. 18 * @param {Number} loggingLevel 19 * Logging level to use as defined in Log.jsm 20 */ 21 configure(loggingLevel) { 22 if (!rootLogger) { 23 rootLogger = Log.repository.getLogger(ROOT_LOGGER_NAME); 24 rootLogger.addAppender(new Log.ConsoleAppender(new Log.BasicFormatter())); 25 } 26 rootLogger.level = loggingLevel; 27 }, 28 29 /** 30 * Obtain a named logger with the recipe client logger as its parent. 31 * @param {String} name 32 * Name of the logger to obtain. 33 * @return {Logger} 34 */ 35 getLogger(name) { 36 return Log.repository.getLogger(`${ROOT_LOGGER_NAME}.${name}`); 37 }, 38}; 39