OSDN Git Service

4a01d52979045e1503aa280ab3620d36416b11c4
[bytom/bytom-electron.git] / main-process / logger.js
1 var log4js = require('log4js')
2
3 /**
4  * Setup logging system.
5  * @param  {Object} [options]
6  * @param  {String} [options.logLevel] Minimum logging threshold (default: info).
7  * @param  {String} [options.logFolder] Log folder to write logs to.
8  */
9 exports.setup = function (options) {
10   const logFolder = options.logFolder
11   const level = options.logLevel || 'info'
12
13   const config = {
14     appenders: {
15       out: { type: 'console' },
16       all: {
17         type: 'file',
18         filename: `${logFolder}/all.log`,
19       },
20       main: {
21         type: 'file',
22         filename: `${logFolder}/electron/main.log`,
23
24       },
25       menu: {
26         type: 'file',
27         filename: `${logFolder}/electron/menu.log`
28       },
29       bytomd: {
30         type: 'file',
31         filename: `${logFolder}/bytomd/bytomd.log`
32       }
33     },
34     categories: {
35       default: { appenders: [ 'out', 'all', 'main' ], level },
36       menu: { appenders: [ 'out', 'all', 'menu' ], level },
37       bytomd: { appenders: [ 'out', 'all', 'bytomd' ], level }
38     }
39   }
40
41   log4js.configure(config)
42 }
43
44
45 exports.create = (category) => {
46   const logger = log4js.getLogger(category)
47
48     // Allow for easy creation of sub-categories.
49   logger.create = (subCategory) => {
50     return exports.create(`${category}/${subCategory}`)
51   }
52
53   return logger
54 }