What is @percy/logger?
@percy/logger is a logging utility designed for use with the Percy visual testing platform. It provides a simple and consistent way to log messages with different levels of severity, such as info, debug, warn, and error. The logger is highly configurable and can be integrated into various parts of a Node.js application to provide detailed logging information.
What are @percy/logger's main functionalities?
Basic Logging
This feature allows you to log messages at different levels of severity. The logger provides methods like info, debug, warn, and error to log messages accordingly.
const logger = require('@percy/logger');
logger.info('This is an info message');
logger.debug('This is a debug message');
logger.warn('This is a warning message');
logger.error('This is an error message');
Custom Log Levels
This feature allows you to define and use custom log levels. You can log messages with a custom severity level by using the log method and specifying the custom level.
const logger = require('@percy/logger');
logger.log('custom', 'This is a custom log level message');
Log Formatting
This feature allows you to customize the format of the log messages. You can define a custom format function that will be used to format all log messages.
const logger = require('@percy/logger');
logger.format = (level, message) => `[${level.toUpperCase()}] ${message}`;
logger.info('This is a formatted info message');
Log Filtering
This feature allows you to filter log messages based on their severity level. You can set the logger's level property to control which messages are logged.
const logger = require('@percy/logger');
logger.level = 'warn';
logger.info('This info message will not be logged');
logger.warn('This warning message will be logged');
Other packages similar to @percy/logger
winston
Winston is a versatile logging library for Node.js that supports multiple transports (e.g., console, file, HTTP) and log levels. It is highly configurable and can be used for both simple and complex logging needs. Compared to @percy/logger, Winston offers more advanced features and greater flexibility.
bunyan
Bunyan is a simple and fast JSON logging library for Node.js. It is designed to produce structured logs that are easy to parse and analyze. Bunyan provides features like log levels, serializers, and streams. Compared to @percy/logger, Bunyan focuses on structured logging and JSON output.
pino
Pino is a fast and low-overhead logging library for Node.js. It is designed for high-performance logging and provides features like log levels, serializers, and transports. Pino is known for its speed and efficiency, making it suitable for performance-critical applications. Compared to @percy/logger, Pino emphasizes performance and low overhead.
@percy/logger
Common logger used throughout the Percy CLI and SDKs.
Usage
import logger from '@percy/logger'
const log = logger('foobar')
log.info('info message')
log.error('error message')
log.warn('warning message')
log.debug('debug message')
log.deprecated('deprecation message')
logger([debug])
Creates a group of logging functions that will be associated with the provided debug
label. When
debug logging is enabled, this label is printed with the [percy:*]
label and can be filtered via
the PERCY_DEBUG
environment variable.
PERCY_DEBUG="one:*,*:a,-*:b"
logger.loglevel('debug')
logger('one').debug('test')
logger('one:a').debug('test')
logger('one:b').debug('test')
logger('one:c').debug('test')
logger('two').debug('test')
logger('two:a').debug('test')
logger.loglevel([level][, flags])
Sets or retrieves the log level of the shared logger. If the second argument is provided, level
is
treated as a fallback when all logging flags are false
. When no arguments are provided, the method
will return the current log level of the shared logger.
logger.loglevel('info', { verbose: true })
logger.loglevel() === 'debug'
logger.loglevel('info', { quiet: true })
logger.loglevel() === 'warn'
logger.loglevel('info', { silent: true })
logget.loglevel() === 'silent'
logger.loglevel('info')
logger.loglevel() === 'info'
logger.format(message, debug[, level])
Returns a formatted message
depending on the provided level and logger's own log level. When
debugging, the debug
label is added to the prepended [percy:*]
label.
logger.format('foobar', 'test')
logger.loglevel('debug')
logger.format('foobar', 'test', warn')
//=> [percy:test] foobar (yellow for warnings)
logger.query(filter)
Returns an array of logs matching the provided filter function.
let logs = logger.query(log => {
return log.level === 'debug' &&
log.message.match(/foobar/)
})