Skip to content

Unix socket example #98

@tytremblay

Description

@tytremblay

The Issue

I'm trying to use pino-socket as a transport to log to syslog via /dev/log on my Ubuntu 22.04 system using node 18.

import pino from 'pino';

const logger = pino({
  level: 'info',
  transport: {
    targets: [
      {
        level: 'trace',
        target: 'pino-socket',
        options: {
          unixsocket: '/dev/log',
        },
      },
      { level: 'trace', target: 'pino-pretty', options: {} },
    ],
  },
});

logger.info(`pino logger instantiated `);

export { logger };

Here's the output I see in my console:

[15:46:00.992] INFO (501708): pino logger instantiated 
Error: send ECONNREFUSED
    at doSend (node:dgram:716:16)
    at defaultTriggerAsyncIdScope (node:internal/async_hooks:464:18)
    at afterDns (node:dgram:662:5)
    at Socket.send (node:dgram:672:5)
    at Writable.write [as _write] (/home/ty/Documents/rtr/rtr-webapps/node_modules/pino-socket/lib/UdpConnection.js:28:16)
    at doWrite (node:internal/streams/writable:411:12)
    at clearBuffer (node:internal/streams/writable:572:7)
    at onwrite (node:internal/streams/writable:464:7)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)

And of course no logs show up when I run tail -f /var/log/syslog | grep pino

winston-syslog seems to work

But I would much rather use pino

import { config, createLogger, transports } from 'winston';
import { Syslog, SyslogTransportOptions } from 'winston-syslog';

const opt: SyslogTransportOptions = {
  protocol: 'unix',
  path: '/dev/log',
  facility: 'user',
  localhost: '',
  app_name: 'my-great-app',
};

const Logger = createLogger({
  levels: config.syslog.levels,
  transports: [new transports.Console()],
});
const sysLogTransport = new Syslog(opt);
Logger.add(sysLogTransport);

Logger.info(`Logger instantiated `);
export { Logger };

I get this line in /var/log/syslog :

May 10 15:59:32 my-ubuntu-4 my-great-app[504122]: {"level":"info","message":"Logger instantiated "}

The Ask

I'm sure I'm doing something wrong. Could you please provide an example?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions