Simple logger for Electron app based on Winston.
Tip
The default write location for log files via the Electron app.getPath('log')
API.
- on Linux:
~/.config/{app name}/logs/log.log
- on macOS:
~/Library/Logs/{app name}/log.log
- on Windows:
%USERPROFILE%\AppData\Roaming\{app name}\logs\log.log
$ npm install electron-winston
import { Logger } from 'electron-winston/main'
const logger = new Logger()
logger.info('hello world')
- Register a listener in main process, so that you can use it in the renderer process.
import { Logger } from 'electron-winston/main'
const logger = new Logger()
logger.registerRendererListener()
- Expose the
Logger
API.
You can expose it in the specified preload script:
import { exposeLogger } from 'electron-winston/preload'
exposeLogger()
Or, you can expose it globally in the main process for all renderer processes:
import { useLogger } from 'electron-winston/main'
useLogger()
- Use it in the renderer process
import logger from 'electron-winston/renderer'
logger.info('hello world')
return a new instance.
- Type:
LoggerDefaultTransport
|false
- Default:
undefined
- Required:
false
The default transport options. set to false
to disable the default transport.
- Type:
winston.LoggerOptions
- Default:
undefined
- Required:
false
The winston logger options.
import { Logger, winston } from 'electron-winston/main'
const customPrintf = winston.format.printf((info: any) => {
return `${info.timestamp} ${info.level}: ${info.message}`
})
const logger = new Logger({
defaultTransport: false,
winstonOptions: {
// read more about winston options:
// https://github.com/winstonjs/winston?tab=readme-ov-file#creating-your-own-logger
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
customPrintf
)
})
/// ... other transports
],
/// ... other winston logger options
}
})
logger.info('hello world')
// add a new transport to the logger
logger.winstonLogger.add(new winston.transports.File({ filename: 'error.log', level: 'error' }))
// remove a transport from the logger
logger.winstonLogger.remove(winston.transports.Console)
/// ... other winston logger methods
// read more about winston logger: https://github.com/winstonjs/winston?tab=readme-ov-file#creating-your-own-logger
MIT copyright © 2024-present alex wei