logging.sys.mjs (1581B)
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 import { Log } from "resource://gre/modules/Log.sys.mjs"; 6 7 export function initTestLogging(level) { 8 function LogStats() { 9 this.errorsLogged = 0; 10 } 11 LogStats.prototype = { 12 format: function format(message) { 13 if (message.level == Log.Level.Error) { 14 this.errorsLogged += 1; 15 } 16 17 return ( 18 message.time + 19 "\t" + 20 message.loggerName + 21 "\t" + 22 message.levelDesc + 23 "\t" + 24 this.formatText(message) + 25 "\n" 26 ); 27 }, 28 }; 29 Object.setPrototypeOf(LogStats.prototype, new Log.BasicFormatter()); 30 31 let log = Log.repository.rootLogger; 32 let logStats = new LogStats(); 33 let appender = new Log.DumpAppender(logStats); 34 35 if (typeof level == "undefined") { 36 level = "Debug"; 37 } 38 getTestLogger().level = Log.Level[level]; 39 Log.repository.getLogger("Services").level = Log.Level[level]; 40 41 log.level = Log.Level.Trace; 42 appender.level = Log.Level.Trace; 43 // Overwrite any other appenders (e.g. from previous incarnations) 44 log.ownAppenders = [appender]; 45 log.updateAppenders(); 46 47 // SQLite logging is noisy in these tests - we make it quiet by default 48 // (although individual tests are free to bump it later) 49 Log.repository.getLogger("Sqlite").level = Log.Level.Info; 50 51 return logStats; 52 } 53 54 export function getTestLogger() { 55 return Log.repository.getLogger("Testing"); 56 }