Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/electron-timber
Pretty logger for Electron apps
https://github.com/sindresorhus/electron-timber
electron electron-module logger logging logging-library nodejs npm-package
Last synced: 6 days ago
JSON representation
Pretty logger for Electron apps
- Host: GitHub
- URL: https://github.com/sindresorhus/electron-timber
- Owner: sindresorhus
- License: mit
- Created: 2018-01-23T15:07:34.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T09:13:24.000Z (9 months ago)
- Last Synced: 2025-01-14T19:55:03.282Z (6 days ago)
- Topics: electron, electron-module, logger, logging, logging-library, nodejs, npm-package
- Language: JavaScript
- Size: 77.1 KB
- Stars: 405
- Watchers: 9
- Forks: 13
- Open Issues: 8
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-electron - electron-timber - Pretty logger. (Tools / For Electron)
- awesome-electron - electron-timber - Pretty logger. ![](https://img.shields.io/github/stars/sindresorhus/electron-timber.svg?style=social&label=Star) (Library / Logging)
- awesome-electron-zh - electron-timber - Pretty logger. (Tools / For Electron)
README
# electron-timber
> Pretty logger for Electron apps
By default, logs from the renderer process don't show up in the terminal. Now they do.
You can use this module directly in both the main and renderer process.
## Install
```sh
npm install electron-timber
```*Requires Electron 30 or later.*
## Usage
Main process:
```js
import {app, BrowserWindow} from 'electron';
import logger from 'electron-timber';let mainWindow;
(async () => {
await app.whenReady();mainWindow = new BrowserWindow();
await mainWindow.loadURL(…);logger.log('Main log');
logger.error('Main error');const customLogger = logger.create({name: 'custom'});
customLogger.log('Custom log');
})();
```Renderer process:
```js
import logger from 'electron-timber';logger.log('Renderer log');
logger.error('Renderer error');
```## API
## logger
Logging will be prefixed with either `main` or `renderer` depending on where it comes from.
Logs from the renderer process only show up if you have required `electron-timber` in the main process.
The methods are bound to the class instance, so you can do: `const log = logger.log; log('Foo');`.
### log(…values)
Like `console.log`.
### warn(…values)
Like `console.warn`.
### error(…values)
Like `console.error`.
### time(label)
Like `console.time`.
### timeEnd(label)
Like `console.timeEnd`.
### streamLog(stream)
Log each line in a [`stream.Readable`](https://nodejs.org/api/stream.html#stream_readable_streams). For example, `child_process.spawn(…).stdout`.
### streamWarn(stream)
Same as `streamLog`, but logs using `console.warn` instead.
### streamError(stream)
Same as `streamLog`, but logs using `console.error` instead.
### create(options?)
Create a custom logger instance.
You should initialize this on module load so prefix padding is consistent with the other loggers.
#### options
Type: `object`
##### name
Type: `string`
Name of the logger. Used to prefix the log output. Don't use `main` or `renderer`.
##### ignore
Type `RegExp`
Ignore lines matching the given regex.
##### logLevel
Type: `string`
Can be `info` (log everything), `warn` (log warnings and errors), or `error` (log errors only). Defaults to `info` during development and `warn` in production.
### getDefaults()
Gets the default options (across `main` and `renderer` processes).
### setDefaults(options?) *Main process only*
Sets the default options (across `main` and `renderer` processes).
#### options
Type: `object`
Same as the `options` for `create()`.
## Toggle loggers
You can show the output of only a subset of the loggers using the environment variable `TIMBER_LOGGERS`. Here we show the output of the default `renderer` logger and a custom `unicorn` logger, but not the default `main` logger:
```sh
TIMBER_LOGGERS=renderer,unicorn electron .
```## Related
- [electron-util](https://github.com/sindresorhus/electron-util) - Useful utilities for developing Electron apps and modules
- [electron-reloader](https://github.com/sindresorhus/electron-reloader) - Simple auto-reloading for Electron apps during development
- [electron-serve](https://github.com/sindresorhus/electron-serve) - Static file serving for Electron apps
- [electron-debug](https://github.com/sindresorhus/electron-debug) - Adds useful debug features to your Electron app
- [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) - Context menu for your Electron app
- [electron-dl](https://github.com/sindresorhus/electron-dl) - Simplified file downloads for your Electron app
- [electron-unhandled](https://github.com/sindresorhus/electron-unhandled) - Catch unhandled errors and promise rejections in your Electron app