# electron-log[](https://travis-ci.org/megahertz/electron-log)[](https://badge.fury.io/js/electron-log)[](https://david-dm.org/megahertz/electron-log)## DescriptionJust a simple logging module for your Electron or NW.js application.No dependencies. No complicated configuration. Just require and use.It can be used without Electron.By default it writes logs to the following locations:* **on Linux:** `~/.config/<app name>/log.log`* **on OS X:** `~/Library/Logs/<app name>/log.log`* **on Windows:** `%USERPROFILE%\AppData\Roaming\<app name>\log.log`## InstallationInstall with [npm](https://npmjs.org/package/electron-log):npm install electron-log## Usage```jsvar log = require('electron-log');log.info('Hello, log');```### Log levelselectron-log supports the following log levels:error, warn, info, verbose, debug, silly### TransportTransport is a simple function which requires an object which describesa message. By default, two transports are active: console and file.Please be aware that the file log level is 'warn' by default, so infoand debug messages will be filtered. The file path is dependent on thecurrent platform.#### Disable default transport:```jslog.transports.file.level = false;log.transports.console.level = false;```#### Override transport:```jsvar format = require('util');log.transports.console = function(msg) {var text = util.format.apply(util, msg.data);console.log(`[${msg.date.toLocaleTimeString()} ${msg.level}] ${text}`);};```Please be aware that if you override a transport function the defaulttransport options (like level or format) will be undefined.#### Console Transport```js// Log levellog.transports.console.level = 'warn';/*** Set output format template. Available variables:* Main: {level}, {text}* Date: {y},{m},{d},{h},{i},{s},{ms}*/log.transports.console.format = '{h}:{i}:{s}:{ms} {text}';// Set a function which formats outputlog.transports.console.format = (msg) => util.format.apply(util, msg.data);```#### Renderer Console transportShow logs in Chromium DevTools Console. It has the same options asconsole transport.#### File transport```js// Same as for console transportlog.transports.file.level = 'warn';log.transports.file.format = '{h}:{i}:{s}:{ms} {text}';// Set approximate maximum log size in bytes. When it exceeds,// the archived log will be saved as the log.old.log filelog.transports.file.maxSize = 5 * 1024 * 1024;// Write to this file, must be set before first logginglog.transports.file.file = __dirname + '/log.txt';// fs.createWriteStream options, must be set before first logginglog.transports.file.streamConfig = { flags: 'w' };// set existed file streamlog.transports.file.stream = fs.createWriteStream('log.txt');```By default, file transport reads a productName or name property frompackage.json to determine a log path like`~/.config/<app name>/log.log`. If you have no package.json or you wantto specify another path, just set the appName property:```jslog.transports.file.appName = 'test';```This value should be set before the first log method call.## Renderer processSince version 2.0.0 this package works differently in main and rendererprocesses. When it's included in a renderer process it sends logs tothe main process through IPC. There are no API changes, you can stillrequire the package by the same way both in main and renderer processes,but please be aware that transport configuration is available onlyinside the main process.## Change Log**2.1.0**- Add Renderer Console transport**2.0.0**- Move log.appName property to log.transports.file.appName.- Change a log message object. See updated[Override transport section](#override-transport) if you use a customtransport.- Now it's not possible to configure transports from a rendererprocess, only from the main.- To disable a transport set its level to false.- Fix problems when this package is used from a renderer process.- Add Typescript definitions.- Add [log-s](https://github.com/megahertz/log-s) transport(experimental).- Fix file transport appName detection when an application is runin dev environment (through `electron .` or similar way)**1.3.0**- #18 Rename 'warning' log level to 'warn'**1.2.0**- #14 Use native console levels instead of console.log**1.0.16**- Prefer to use package.json:productName instead of package.json:nameto determine a log path.## LicenseLicensed under MIT.