# abstract-logger

> It's an abstract logger.

Latest version **0.2.5** (published 2016-03-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install abstract-logger
pnpm add abstract-logger
yarn add abstract-logger
bun add abstract-logger
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.5 |
| Published | 2016-03-26 |
| First published | 2015-09-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | riceball |
| Keywords | logger, logging, log, loglevel, abstract, class, klass |

## Links

- npm: https://www.npmjs.com/package/abstract-logger
- Repository: https://github.com/snowyu/abstract-logger.js
- Issues: https://github.com/snowyu/abstract-logger.js/issues
- npm.io page: https://npm.io/package/abstract-logger

## Dependencies (2)

- [util-ex](https://npm.io/package/util-ex.md) ^0.3.14
- [inherits-ex](https://npm.io/package/inherits-ex.md) ^1.1.4

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 0.2.5 (latest) — 2016-03-26
- 0.2.4 — 2015-09-15
- 0.2.3 — 2015-09-13
- 0.2.2 — 2015-09-13
- 0.2.1 — 2015-09-13
- 0.2.0 — 2015-09-12
- 0.1.0 — 2015-09-11
- 0.0.1 — 2015-09-11

## README

## abstract-logger [![npm](https://img.shields.io/npm/v/abstract-logger.svg)](https://npmjs.org/package/abstract-logger)

[![Build Status](https://img.shields.io/travis/snowyu/abstract-logger.js/master.svg)](http://travis-ci.org/snowyu/abstract-logger.js)
[![Code Climate](https://codeclimate.com/github/snowyu/abstract-logger.js/badges/gpa.svg)](https://codeclimate.com/github/snowyu/abstract-logger.js)
[![Test Coverage](https://codeclimate.com/github/snowyu/abstract-logger.js/badges/coverage.svg)](https://codeclimate.com/github/snowyu/abstract-logger.js/coverage)
[![downloads](https://img.shields.io/npm/dm/abstract-logger.svg)](https://npmjs.org/package/abstract-logger)
[![license](https://img.shields.io/npm/l/abstract-logger.svg)](https://npmjs.org/package/abstract-logger)


It is an abstract logger class.

## Usage


```coffee
Logger    = require 'abstract-logger'
inherits  = require 'inherits-ex'

class MyLogger
  inherits MyLogger, Logger

  constructor: ->super
  # The `_write` method need to be overwrote.
  _write: (str)->console.error str
```


```js
var logger = new MyLogger('test')
logger.log({
  message: '${name} - ${level}: here is a %s logging "${title}"!'
  , title: 'Today news'
  , level: log.levels.ERROR
}, 'pretty')
//or:
logger.log('${name} - ${level}: here is a %s logging "${title}"!', {
    title: 'Today news'
  , level: log.levels.ERROR
}, 'pretty')
//result: 'test - ERROR: here is a pretty logging "Today news"'
```

## API

* Methods:
  * `log(message[, context], args...)`:eg, log('hi ${user}', {user:'Mikey'})
    * message *(String)*: The message to show up
    * context *(Object)*: The optional context to escape the message against and pass the options to the log:
      * level *(Number|String)*: the logLevel. it will be translated to the string if it's a number
      * label *(String)*: the status label.
      * name *(String)*: the logger name if exists.
  * `log(context, args...)`:eg, log({message:'${name} - ${level}: hi ${user}', level:'info', user:'Mikey'})
    * The context to escape the message against and pass the options to the log:
      * message *(String)*: The message to show up
      * level *(Number|String)*: the logLevel. it will be translated to the string if it's a number
      * label *(String)*: the status label.
      * name *(String)*: the logger name if exists.
  * `write(...)`: write a new-line if no arguments.
  * `writeln(...)`: Same as `log.write()` but automatically appends a `\n` at the end
    of the message.
  * `emergency/alert/critical/error/warning/notice/info/debug/trace(message[, context], args...)`:
    * log the specified level message.


## TODO

+ Stream with transport (like https://github.com/winstonjs/winston)

## Changes

### v0.2

+ `enabled` *(Boolean)*: enable/disable the logger. default to true.
+ `levels` *(LogLevels)*: customizable logging levels
  + The default LogLevels:
    * SILENT:-1
    * EMERGENCY:0 system is unusable
    * ALERT:1     action must be taken immediately
    * CRITICAL:2  the system is in critical condition
    * ERROR:3     error condition
    * WARNING:4   warning condition
    * NOTICE:5    a normal but significant condition
    * INFO:6      a purely informational message
    * DEBUG:7     messages to debug an application
+ `level`: use the property to get/set the log level.
  * defaults to levels.ERROR.
  * set `'SILENT'` to mute the loglevel msg, it will still print it out if the msg without loglevel.
  * setter *(Nubmer|String)*: set the logging level via number or string.
  * getter *(String)*: get the logging level string, or get the level number via `_level` property.
* `log()`
  + level, name options to context.
  + log(context, args...)

## License

MIT

---
_Source: https://npm.io/package/abstract-logger · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
