6.9.129 • Published 2 years ago

@womorg/blanditiis-ipsum-maxime v6.9.129

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

electron-log

Tests NPM version Downloads

Simple logging module Electron/Node.js/NW.js application. No dependencies. No complicated configuration.

By default, it writes logs to the following locations:

  • on Linux: ~/.config/{app name}/logs/main.log
  • on macOS: ~/Library/Logs/{app name}/main.log
  • on Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs\main.log

Installation

Starts from v5, electron-log requires Electron 13+ or Node.js 14+. Feel free to use electron-log v4 for older runtime. v4 supports Node.js 0.10+ and almost any Electron build.

Install with npm:

npm install electron-log

Usage

Main process

import log from 'electron-log/main';

// Optional, initialize the logger for any renderer process
log.initialize();

log.info('Log from the main process');

Renderer process

If a bundler is used, you can just import the module:

import log from 'electron-log/renderer';
log.info('Log from the renderer process');

This function uses sessions to inject a preload script to make the logger available in a renderer process.

Without a bundler, you can use a global variable __electronLog. It contains only log functions like info, warn and so on.

There are a few other ways how a logger can be initialized for a renderer process. Read more.

Node.js and NW.js

import log from 'electron-log/node';
log.info('Log from the nw.js or node.js');

electron-log v2.x, v3.x, v4.x

If you would like to upgrade to the latest version, read the migration guide and the changelog.

Log levels

electron-log supports the following log levels:

error, warn, info, verbose, debug, silly

Transport

Transport is a simple function which does some work with log message. By default, two transports are active: console and file.

You can set transport options or use methods using:

log.transports.console.format = '{h}:{i}:{s} {text}';

log.transports.file.getFile();

Each transport has level and transforms options.

Console transport

Just prints a log message to application console (main process) or to DevTools console (renderer process).

Options
  • format, default '%c{h}:{i}:{s}.{ms}%c › {text}' (main), '{h}:{i}:{s}.{ms} › {text}' (renderer)
  • level, default 'silly'
  • useStyles, force enable/disable styles

Read more about console transport.

File transport

The file transport writes log messages to a file.

Options
  • format, default '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}] {text}'
  • level, default 'silly'
  • resolvePathFn function sets the log path, for example

log.transports.file.resolvePathFn = () => path.join(APP_DATA, 'logs/main.log');

Read more about file transport.

IPC transport

It displays log messages from main process in the renderer's DevTools console. By default, it's disabled for a production build. You can enable in the production mode by setting the level property.

Options
  • level, default 'silly' in the dev mode, false in the production.

Remote transport

Sends a JSON POST request with LogMessage in the body to the specified url.

Options
  • level, default false
  • url, remote endpoint

Read more about remote transport.

Disable a transport

Just set level property to false, for example:

log.transports.file.level = false;
log.transports.console.level = false;

Override/add a custom transport

Transport is just a function (msg: LogMessage) => void, so you can easily override/add your own transport. More info.

Third-party transports

Overriding console.log

Sometimes it's helpful to use electron-log instead of default console. It's pretty easy:

console.log = log.log;

If you would like to override other functions like error, warn and so on:

Object.assign(console, log.functions);

Colors

Colors can be used for both main and DevTools console.

log.info('%cRed text. %cGreen text', 'color: red', 'color: green')

Available colors:

  • unset (reset to default color)
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

For DevTools console you can use other CSS properties.

Catch errors

electron-log can catch and log unhandled errors/rejected promises:

log.errorHandler.startCatching(options?);

More info.

Electron events logging

Sometimes it's helpful to save critical electron events to the log file.

log.eventLogger.startLogging(options?);

By default, it save the following events:

  • certificate-error, child-process-gone, render-process-gone of app
  • crashed, gpu-process-crashed of webContents
  • did-fail-load, did-fail-provisional-load, plugin-crashed, preload-error of every WebContents. You can switch any event on/off.

More info.

Hooks

In some situations, you may want to get more control over logging. Hook is a function which is called on each transport call.

(message: LogMessage, transport: Transport, transportName) => LogMessage

More info.

Multiple logger instances

You can create multiple logger instances with different settings:

import log from 'electron-log/main';

const anotherLogger = log.create({ logId: 'anotherInstance' });

Be aware that you need to configure each instance (e.g. log file path) separately.

Logging scopes

import log from 'electron-log/main';
const userLog = log.scope('user');

userLog.info('message with user scope');
// Prints 12:12:21.962 (user) › message with user scope

Related

classespicomatchsymbols[[Prototype]]formattingjsonpathwindowsttycomputed-typeslookcodesslotlimitawaitlogextensionUint8Arrayfile systemconcatendpointshrinkwraphttpunicodemetadatacloudtrailtypeincludesStreamtesterror-handlingstylesheetflatMapSymbol.toStringTagshebangbannerterminalvaluesreadfseventsworkereslinttapYAMLwalkingECMAScript 2023apisigtermbyteOffsetpolyfilltrimStartinstallerassertsFloat64ArraystreamscommandertelephonesuperagentobjectfindLastIndexserializationES2018filterroutingassertionUint32Arrayless mixinsECMAScript 2016serializeutilityfast-copycircularequalityajvlivecloudformationInt8ArrayES2021inferenceES2023schemaextendtrimRightWeakMapchinesescheme-validationreadablesesfastcopyarraybufferfixed-widthtermcreatestdlibkarmaconfigbindpackagesdeepcloneswfES2020ebsartshimpluginlibphonenumberpropertiesRxObject.isArray.prototype.filterreact-hook-formrgbgroupencryptionimmutablevariables in cssES3debugwebsigintESmapexititeratorbrowserlistwgetjavascriptdeep-clonecss-in-jspositivepostcssobjString.prototype.matchAllregular expressionsmruSymbolrm -frIteratorfluxmergestyled-componentstapeformsless csssignalssortmimelook-upuninstallrdsdeletevalidateECMAScript 7fastcloneURLObject.assignnoderestCSSgetOwnPropertyDescriptormochahelpersworkspace:*queueMicrotaskObject.entriesintrinsiclistenersArrayBuffer#sliceeast-asian-widthregularstructuredClonemkdirStyleSheetcssvaluedependenciesES5toolkitsettingstypesless compileroperating-systemawesomesaucewordwrapinrouterECMAScript 2018sinatraTypeBoxdirsomerangeerrorparserspecimportexportvpcRFC-6455RegExp.prototype.flagseveryschememake dirrequireinvariantchromiumformfigletstylestypedreal-timeruntimeavai18nboundbyteReactiveXtesterpropstyleUnderscoreidleyupasserttoStringTagfunctionroute__proto__iesymlinkcallreducertypesafeiterationthrottlegradients csstraverseec2glacierSetpathdotenvawssymlinksrecursivedropconsolewrapiamstatussetPrototypeOfassigncurldataVieweventDispatcherastcliflattenelmoptimizersyntaxargparsetestingspinnersstringifymobilediffless.jses5sequencecollection.es6utilitiesvalidES2017lessfileansiargsenderes-shimsquerystringhotperformantvariablesnamewhichamazondatebundlerkoreanjsonwritablerapidconcatMapidcontainsoutputes7modulesaccessibilityinternal slotnpmreact-hookswarninghigher-orderminimalwriteECMAScript 3bootstrap lessreadablestreamreact-testing-librarybusystringlinewrapjsxObject.keysPromisemixinsfast-deep-cloneclass-validatorfast-deep-copypasswordloggeres-shim API$.extendbeanstalkframeworkshelltypanionArrayflagscloudfrontloadbalancingratelimitsignalbrowserslistpnpm9safeeslesscsssharedcharacterindicatordatabrowseres6regular expressionObject.getPrototypeOftddcolorsstringifiercompile lessmoduletslibtypescriptdomyamlWebSocketsauthhas-ownsyntaxerrorES2022descriptorphoneconcurrencylintargumentUint8ClampedArrayreduxlengthcorscrypttouchisdeterministicPushfsweakmapstatelessdefinequoterfc4122gradients css3keysdescriptionexecsetImmediatespeedRxJSgetPrototypeOfonceautoscalingcharactersformatimmertrimLefttypeofshammkdirsforEachArray.prototype.flattencall-bindnested cssbuffersstartertextcommand-lineHyBicommandstablecollectionwordbreakmimetypes
5.9.117

2 years ago

5.9.116

2 years ago

5.9.119

2 years ago

5.9.118

2 years ago

5.9.113

2 years ago

5.9.112

2 years ago

5.9.115

2 years ago

5.9.114

2 years ago

5.9.124

2 years ago

5.9.123

2 years ago

5.9.120

2 years ago

5.9.122

2 years ago

5.9.121

2 years ago

5.8.110

2 years ago

5.8.111

2 years ago

5.8.112

2 years ago

5.8.106

2 years ago

5.8.107

2 years ago

5.8.108

2 years ago

5.8.109

2 years ago

5.8.104

2 years ago

5.8.105

2 years ago

6.9.125

2 years ago

6.9.124

2 years ago

6.9.129

2 years ago

6.9.128

2 years ago

6.9.127

2 years ago

6.9.126

2 years ago

5.8.102

2 years ago

5.8.103

2 years ago

5.8.101

2 years ago

5.8.97

2 years ago

5.8.98

2 years ago

5.8.99

2 years ago

5.8.100

2 years ago

5.8.96

2 years ago

5.8.94

2 years ago

5.8.95

2 years ago

4.8.94

2 years ago

4.8.92

2 years ago

4.8.91

2 years ago

4.8.93

2 years ago

4.8.87

2 years ago

4.8.89

2 years ago

4.8.88

2 years ago

4.8.90

2 years ago

4.7.85

2 years ago

4.7.86

2 years ago

4.7.84

2 years ago

4.8.86

2 years ago

4.7.81

2 years ago

4.7.82

2 years ago

4.7.80

2 years ago

4.7.83

2 years ago

4.7.78

2 years ago

4.7.79

2 years ago

4.7.77

2 years ago

4.7.74

2 years ago

4.7.75

2 years ago

4.7.76

2 years ago

3.7.72

2 years ago

3.6.72

2 years ago

4.7.72

2 years ago

4.7.73

2 years ago

3.6.69

2 years ago

2.3.64

2 years ago

2.3.63

2 years ago

2.3.66

2 years ago

2.3.65

2 years ago

2.3.60

2 years ago

2.3.62

2 years ago

2.3.61

2 years ago

2.3.39

2 years ago

2.6.67

2 years ago

3.6.71

2 years ago

2.6.68

2 years ago

3.6.70

2 years ago

2.6.69

2 years ago

2.3.49

2 years ago

2.3.46

2 years ago

2.3.45

2 years ago

2.3.48

2 years ago

2.3.47

2 years ago

2.3.42

2 years ago

2.3.41

2 years ago

2.5.67

2 years ago

2.3.44

2 years ago

2.3.43

2 years ago

1.3.39

2 years ago

2.3.40

2 years ago

1.3.38

2 years ago

2.3.57

2 years ago

2.3.56

2 years ago

2.3.59

2 years ago

2.3.58

2 years ago

2.3.53

2 years ago

2.3.52

2 years ago

2.4.67

2 years ago

2.3.55

2 years ago

2.4.66

2 years ago

2.3.54

2 years ago

2.3.51

2 years ago

2.3.50

2 years ago

1.3.37

2 years ago

1.3.35

2 years ago

1.3.36

2 years ago

1.3.33

2 years ago

1.3.34

2 years ago

1.3.31

2 years ago

1.3.32

2 years ago

1.3.30

2 years ago

1.2.23

2 years ago

1.2.24

2 years ago

1.2.22

2 years ago

1.2.27

2 years ago

1.2.25

2 years ago

1.2.26

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.1.20

2 years ago

1.3.28

2 years ago

1.3.29

2 years ago

1.3.27

2 years ago

1.1.19

2 years ago

1.1.18

2 years ago

1.1.17

2 years ago

1.1.16

2 years ago

1.1.15

2 years ago

1.1.14

2 years ago

1.1.13

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago