0.3.49 • Published 5 months ago

@salto-io/logging v0.3.49

Weekly downloads
8,486
License
Apache-2.0
Repository
github
Last release
5 months ago

Salto Logging

Features

  • Simple API (compared to other logging libraries)
  • Configuration via env vars or API:
    • JSON or text format
    • Outputs to stdout or file
    • Filter specific loggers or pattern
  • Testable log calls
  • util.inspect-like formatting: log.info('hello %o', world)
  • Logs JS Errors with stack

Installing

yarn add @salto/logging

or

npm install @salto/logging

Logging

Getting a logger instance

import { logger } from '@salto/logging'

const log = logger(module)           // namespace taken from module filename
const log = logger('my.namespace')   // namespace set explicitly

Using the logger

Explicit log levels

log.debug('My debug message')
log.info('My object: %o', { hello: 'world' })
log.warn(new Error('oops'))
log.error('This message has extra', { extra: true })

Dynamic log level

import { LogLevel } from '@salto/logging'
const level: LogLevel = howVerboseShouldItBe()
log.log(level, 'My object %o', { hello: 'world' })

Formatting messages

All the log methods accept a printf-like format string, formatted using util.inspect:

log.info('My object: %o', { hello: 'world' })

Logging Error objects

If a JavaScript Error object is specified as the message, its stack property will be logged (which includes the Error's message).

log.warn(new Error('oops')) // logs "Error: oops" along with the stack trace

Logging extra properties

Object specified after formatting arguments will be included in the log's JSON output.

log.error('This message has extra', { extra: true })

Configuring the loggers

The configuration can be changed via env vars.

Variables containing empty string values are treated as undefined.

All the loggers share a single configuration with the following properties:

minLevel: 'info' | 'debug' | 'warn' | 'error' | 'none'

Environment variable:

SALTO_LOG_LEVEL=info

Log calls below the specified level will be ignored.

If 'none' is specified, all calls will be ignored.

Default: none

filename: string | null

Environment variable:

SALTO_LOG_FILE=/tmp/my-package.log

Write the logs to the specified file.

If an empty value is specified, logs will be written to stdout.

Default: '' (write to stdout)

format: 'text' | 'json'

Environment variable:

SALTO_LOG_FORMAT=json

'text': Write logs as text lines.

'json': Write logs as JSON objects, separated by newlines. In this mode the log will include any extra properties:

log.info('Example for extra props written in JSON mode', { extra: ['x', 'y'] })

Default: 'text'

namespaceFilter: string | () => boolean

Environment variable:

SALTO_LOG_NS='mypackage*'

If a string is specified, it is parsed as a glob - only logs having matching namespaces will be written.

When configuring the logger using the .configure API call, a function accepting the string namespace and returning boolean may be specified.

Default: '' (no filtering)

colorize: boolean | null

Environment variable:

SALTO_LOG_COLOR=true

Override colorization in output.

Default: '' - colorize if writing to stdout and the stream supports color.

setting the logging from the programmatic API

logger.setMinLevel('info')

Testing for log calls

Logger creations are memoized using the specified namespace: Multiple logger(namespace) calls result the same logger. So the logger can be initialized statically in the code, and retrieved in the test by specifying the same namespace.

Example using jest

myModule.ts:

import { logger } from '@salto/logging'

const log = logger('my.module')

export const f = () => log.info('hello')

myModule.test.ts:

import { logger } from '@salto/logging'
import { f } from './myModule'

describe('log calls', () => {
  let log: jest.SpyInstance

  beforeEach(() => {
    const logger = logger('my.module') // same namespace
    log = jest.spyOn(logger, 'log')
    f()
  })

  it('calls logger correctly', () => {
    expect(log).toHaveBeenCalledWith('info', 'hello')
  })
})
0.3.42

10 months ago

0.3.41

10 months ago

0.3.49

5 months ago

0.3.48

6 months ago

0.3.47

8 months ago

0.3.46

8 months ago

0.3.45

9 months ago

0.3.44

9 months ago

0.3.43

9 months ago

0.3.40

11 months ago

0.3.39

12 months ago

0.3.38

12 months ago

0.3.37

1 year ago

0.3.36

1 year ago

0.3.35

1 year ago

0.3.34

1 year ago

0.3.33

1 year ago

0.3.31

1 year ago

0.3.30

1 year ago

0.3.32

1 year ago

0.3.29

1 year ago

0.3.28

1 year ago

0.3.27

1 year ago

0.3.27-dantal.1

1 year ago

0.3.28-dantal.1

1 year ago

0.3.28-dantal.9

1 year ago

0.3.26

1 year ago

0.3.25

1 year ago

0.3.24

2 years ago

0.3.23-dantal.1

2 years ago

0.3.23

2 years ago

0.3.24-dantal.5

2 years ago

0.3.24-dantal.4

2 years ago

0.3.24-dantal.3

2 years ago

0.3.24-dantal.2

2 years ago

0.3.24-dantal.1

2 years ago

0.3.24-dantal.7

2 years ago

0.3.24-dantal.6

2 years ago

0.3.20

2 years ago

0.3.22

2 years ago

0.3.21

2 years ago

0.3.19

2 years ago

0.3.18

2 years ago

0.3.17

2 years ago

0.3.19-soap.3

2 years ago

0.3.19-soap.0

2 years ago

0.3.19-soap.2

2 years ago

0.3.19-soap.1

2 years ago

0.3.16

2 years ago

0.3.15

2 years ago

0.3.14

2 years ago

0.3.13

2 years ago

0.3.12

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.9

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

3 years ago

0.3.2

3 years ago

0.3.1

3 years ago

0.2.15

3 years ago

0.2.2-alpha.84

3 years ago

0.2.14

3 years ago

0.2.2-alpha.83

3 years ago

0.2.2-alpha.82

3 years ago

0.2.13

3 years ago

0.2.2-alpha.81

3 years ago

0.2.2-alpha.80

3 years ago

0.2.2-alpha.79

3 years ago

0.2.2-alpha.78

3 years ago

0.2.2-alpha.77

3 years ago

0.2.2-alpha.76

3 years ago

0.2.12

3 years ago

0.2.23-alpha.0

3 years ago

0.2.2-alpha.75

3 years ago

0.2.2-alpha.74

3 years ago

0.2.2-alpha.73

3 years ago

0.2.11

3 years ago

0.2.2-alpha.72

3 years ago

0.2.2-alpha.71

3 years ago

0.2.2-alpha.70

3 years ago

0.2.2-alpha.69

3 years ago

0.2.2-alpha.68

3 years ago

0.2.2-alpha.67

3 years ago

0.2.2-alpha.66

3 years ago

0.2.2-alpha.65

3 years ago

0.2.2-alpha.63

3 years ago

0.2.2-alpha.64

3 years ago

0.2.10

3 years ago

0.2.2-alpha.61

3 years ago

0.2.2-alpha.62

3 years ago

0.2.2-alpha.60

3 years ago

0.2.2-alpha.58

3 years ago

0.2.2-alpha.59

3 years ago

0.2.2-alpha.57

3 years ago

0.2.2-alpha.56

3 years ago

0.2.2-alpha.55

3 years ago

0.2.9

3 years ago

0.2.2-alpha.54

3 years ago

0.2.2-alpha.52

3 years ago

0.2.2-alpha.53

3 years ago

0.2.2-alpha.51

3 years ago

0.2.2-alpha.50

3 years ago

0.2.2-alpha.49

3 years ago

0.2.2-alpha.47

3 years ago

0.2.2-alpha.48

3 years ago

0.2.8

3 years ago

0.2.2-alpha.45

3 years ago

0.2.2-alpha.46

3 years ago

0.2.7

3 years ago

0.2.2-alpha.43

3 years ago

0.2.2-alpha.44

3 years ago

0.2.2-alpha.41

3 years ago

0.2.2-alpha.42

3 years ago

0.2.2-alpha.40

3 years ago

0.2.2-alpha.39

3 years ago

0.2.2-alpha.37

3 years ago

0.2.2-alpha.38

3 years ago

0.2.6

3 years ago

0.2.2-alpha.36

3 years ago

0.2.2-alpha.35

3 years ago

0.2.2-alpha.34

3 years ago

0.2.2-alpha.33

3 years ago

0.2.2-alpha.32

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.2-alpha.3

3 years ago

0.2.2-alpha.31

3 years ago

0.2.2-alpha.2

3 years ago

0.2.2-alpha.0

3 years ago

0.2.2-alpha.1

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.41

3 years ago

0.1.40

3 years ago

0.1.39

3 years ago

0.1.38

3 years ago

0.1.37

3 years ago

0.1.36

4 years ago

0.1.35

4 years ago

0.1.34

4 years ago

0.1.33

4 years ago

0.1.32

4 years ago

0.1.31

4 years ago

0.1.30

4 years ago

0.1.29

4 years ago

0.1.28

4 years ago

0.1.27

4 years ago

0.1.26

4 years ago

0.1.25

4 years ago

0.1.24

4 years ago

0.1.23

4 years ago

0.1.22

4 years ago

0.1.21

4 years ago

0.1.20

4 years ago

0.1.19

4 years ago

0.1.18

4 years ago

0.1.17

4 years ago

0.1.16

4 years ago

0.1.15

4 years ago

0.1.14

4 years ago

0.1.13

4 years ago

0.1.12

4 years ago

0.1.11

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

0.1.4

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.1.3

4 years ago