{"id":27243431,"url":"https://github.com/dalee/node-logger","last_synced_at":"2025-06-14T14:36:41.858Z","repository":{"id":67450053,"uuid":"77616967","full_name":"Dalee/node-logger","owner":"Dalee","description":"Vanilla Node.js, Hapi.js and Express.js logger (Syslog over UDP4 and Console), build with Babel6","archived":false,"fork":false,"pushed_at":"2018-06-27T15:21:25.000Z","size":66,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-09T22:43:39.439Z","etag":null,"topics":["console","express-middleware","hapi-plugin","logger","logging","logging-library","logstash","syslog","udp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dalee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-29T14:17:52.000Z","updated_at":"2018-06-27T15:21:26.000Z","dependencies_parsed_at":"2023-06-11T02:46:29.572Z","dependency_job_id":null,"html_url":"https://github.com/Dalee/node-logger","commit_stats":{"total_commits":45,"total_committers":5,"mean_commits":9.0,"dds":"0.33333333333333337","last_synced_commit":"aeb973c88f739f4decc8e543a1466e6db0997ea5"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dalee%2Fnode-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dalee%2Fnode-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dalee%2Fnode-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dalee%2Fnode-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dalee","download_url":"https://codeload.github.com/Dalee/node-logger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248290460,"owners_count":21078992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["console","express-middleware","hapi-plugin","logger","logging","logging-library","logstash","syslog","udp"],"created_at":"2025-04-10T20:36:54.626Z","updated_at":"2025-04-10T20:36:55.333Z","avatar_url":"https://github.com/Dalee.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dalee-logger\n\n[![Build Status](https://travis-ci.org/Dalee/node-logger.svg?branch=master)](https://travis-ci.org/Dalee/node-logger)\n[![codecov](https://codecov.io/gh/Dalee/node-logger/branch/master/graph/badge.svg)](https://codecov.io/gh/Dalee/node-logger)\n[![Dependencies](https://david-dm.org/Dalee/node-logger.svg)](https://david-dm.org/Dalee/node-logger)\n\nGreat for Docker/Kubernetes environments.\n\n\u003e Currently in production testing phase.\n\nKey features:\n\n * Minimal configuration required\n * Bundled framework support:\n   * [hapi.js](https://hapijs.com/) `\u003e= v15.2.0`\n   * [express.js](http://expressjs.com/) `\u003e= v4.0.0`\n * General `uncaughtException` and `unhandledRejection` handling (process will be terminated)\n * Console writer (enabled by default)\n * Syslog [RFC3164](https://www.ietf.org/rfc/rfc3164.txt) udp4 writer\n\n## Usage\n\n`npm i dalee-logger --save`\n\n### Configuration\n\nGlobal configuration options:\n\n * `facility` - facility, default value: `1` (`USER`) (syslog parameter)\n * `severity` - severity for events logged with `log` method, default value: `debug`\n * `hostname` - hostname (syslog parameter), default value: `os.hostname()`\n * `app` - application name (syslog parameter), default value: `path.basename(process.title)`\n * `logger_level` - output event level, possible values are:\n   * `emerg`\n   * `alert`\n   * `critical`\n   * `error`\n   * `warning`\n   * `notice`\n   * `info`\n   * `debug`\n\n\n\u003e `logger_level` also can be set via environment variable `LOGGER_LEVEL`\n\n### Adapter configuration\n\n#### Console\n\n * `enabled` - true/false, should console be silent or not, default is `true`\n\n\nSample output:\n```\n[2016-11-26 13:52:45.2342] debug: Hello world\n```\n\n#### Syslog\n\n * `host` - valid fqdn or ip address of Syslog/Logstash daemon\n * `port` - udp4 port number\n\n\nSample output (udp4 packet):\n```\n\u003c0\u003e2016-11-26 23:23:23.4554 localhost app: hello world\n```\n\n### Standalone\n\n```\nimport Logger from 'dalee-logger';\n\nLogger.setParameters({ app: 'node' });\n\nLogger.addAdapter(Logger.Console, {});\nLogger.addAdapter(Logger.Syslog, {\n    'host': 'example.com',\n    'port': 514\n});\n\nLogger.debug('Will write to console and send UDP syslog packet');\n```\n\n### hapi.js\n\n#### hapi `\u003e= 17.0.0`\n\nRegister as plugin in `manifest.js`:\n\n```\nplugin: {\n  plugin: 'dalee-logger/hapi-17',\n  options: {\n    app: 'node-daemon',\n    hostname: 'example.com',\n    console: {\n      enabled: true\n    },\n    syslog: {\n      host: 'example.com',\n      port: 514\n    }\n  }\n}\n```\n\n#### hapi `\u003e= 15.2.0` `\u003c 17.0.0`\n\nRegister as plugin in `manifest.js`:\n\n```\nplugin: {\n  register: 'dalee-logger/hapi',\n  options: {\n    app: 'node-daemon',\n    hostname: 'example.com',\n    console: {\n      enabled: true\n    },\n    syslog: {\n      host: 'example.com',\n      port: 514\n    }\n  }\n}\n```\n\n### express.js\n\nRegister as express middleware:\n\n```\nimport express from 'express';\nimport expressLogger from 'dalee-logger/express';\n\nconst app = express();\nconst logger = expressLogger({\n  app: 'node-daemon',\n  hostname: 'example.com',\n  console: {\n    enabled: true\n  },\n  syslog: {\n    host: 'example.com',\n    port: 514\n  }\n});\n\napp.use(logger);\n\napp.get('/', function(req,res) {\n    req.log('notice', 'The next message will be error');\n    undefined.error = 'Force error';\n});\n\napp.use(logger.errorLogger);\n\napp.listen(80, () =\u003e {\n    logger.log('debug', 'server started');\n});\n```\n\n## Sample Logstash configuration\n\n\u003e Check out our [ELK-playground](https://github.com/Dalee/elk-playground) project\n\n\n * Logstash will listen on port `5000` for udp packets\n * Successfully parsed message will go into index named `logstash-{syslog_program}`\n * Every unparsed line will go to index named `logstash-error`\n * Logstash will write to Elastic on `localhost:9200`\n\n\n```\ninput {\n    udp {\n        port =\u003e 5000\n        type =\u003e syslog\n    }\n}\n\nfilter {\n    grok {\n      match =\u003e { \"message\" =\u003e \"\u003c%{POSINT:syslog_pri}\u003e%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\\[%{POSINT:syslog_pid}\\])?: %{GREEDYDATA:syslog_message}\" }\n      add_field =\u003e [ \"received_at\", \"%{@timestamp}\" ]\n      add_field =\u003e [ \"index_type\", \"%{syslog_program}\" ]\n    }\n\n    date {\n      match =\u003e [ \"syslog_timestamp\", \"MMM d HH:mm:ss.SSS\" ]\n      locale =\u003e \"en\"\n      timezone =\u003e \"Europe/Moscow\"\n      target =\u003e \"@timestamp\"\n    }\n\n    syslog_pri {\n    }\n\n    # every unparsed line will go to logstash-error index\n    if \"_grokparsefailure\" in [tags] {\n        mutate {\n            add_field =\u003e [ \"index_type\", \"error\" ]\n        }\n    }\n}\n\noutput {\n    elasticsearch {\n        # flush_size = 1 set only for debugging purposes, should be \u003e 1 on production\n        flush_size =\u003e 1\n        hosts =\u003e [\"localhost:9200\"]\n        index =\u003e \"logstash-%{index_type}\"\n    }\n    stdout {\n        # this should be disabled in production environment\n        codec =\u003e rubydebug\n    }\n}\n```\n\n## License\n\nSoftware licensed under the [MIT License](http://www.opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalee%2Fnode-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdalee%2Fnode-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdalee%2Fnode-logger/lists"}