Giter Club home page Giter Club logo

node-systemd-journald's Issues

Display NULL instead of just ignoring it?

Actually null is an Object for Javascript.

With that in mind fields would not be flattened down to some entry in the Journal. They are just ignored by the converter function - and this more by accident - tbh:

function obj2journalFields( journalFields, obj, prefix ) {
if( prefix === undefined ) prefix = '';
// Go through all fields
for( var o in obj ) {
var name = o.toUpperCase();
if( obj[o] instanceof Buffer ) {
journalFields[ prefix + name ] = obj[o].toString('hex');
} else if( typeof obj[o] == 'object' ) {
obj2journalFields( journalFields, obj[o], prefix + name + "_" );
} else if( obj[o] !== undefined && ( prefix.length > 0 || name != 'PRIORITY' ) ) {
journalFields[ prefix + name ] = obj[o].toString();
}
}
}

This is maybe not the best behaviour.

Propose: Display fields that are null with the string "null" in the Journal? Any different opinions on that?

Typescript definitions

Thanks for this great lib, I stumbled upon it after getting annoyed by all log entries having different PIDs using my previous method, which was piping the log message into logger --journald.
It would be great if you could add Typescript definitions to the package, for cleaner code in Typescript projects!

Is it possible to merge this into `systemd/node-systemd`?

As a developer I'm really confused because there are "official" bindings for node provided on github.com/systemd account and there is your lib which works on newer node versions (as far as I understand your README.Why section).

Have you considered proposing your bindings as a replacement for github.com/systemd/node-systemd? I mean something like opening pull request or issue there.

Allow the syslog identifier to be passed without setting process.title

process.title is limited, according to the node docs.

The process.title property returns the current process title (i.e. returns the current value of ps). Assigning a new value to process.title modifies the current value of ps.

Note: When a new value is assigned, different platforms will impose different maximum length restrictions on the title. Usually such restrictions are quite limited. For instance, on Linux and OS X, process.title is limited to the size of the binary name plus the length of the command line arguments because setting the process.title overwrites the argv memory of the process. Node.js v0.8 allowed for longer process title strings by also overwriting the environ memory but that was potentially insecure and confusing in some (rather obscure) cases.

It would be awesome if there was a way to specify the syslog identifier without mucking with process.title.

One idea would be to allow

const log = require('systemd-journald')
log.identifier = 'my-identifier';
log.debug(...)

I did some very light testing on one machine, and I was able to set the syslog identifier with the following code:

log.debug('My message', { syslog_identifier: 'my-identifier' })

which makes me think it might be as easy as checking if log.identifier is defined and, if it is, adding fields.SYSLOG_IDENTIFIER = log.identifier, but I didn't test that.

Thoughts?

Display instances of Buffer in a nice way

If buffers are included in the fields object, something like this is put into the journal:

{
...
        "PAYLOAD_0" : "1",
        "PAYLOAD_1" : "2",
        "PAYLOAD_2" : "3",
        "PAYLOAD_3" : "4",
        "PAYLOAD_4" : "5",
        "PAYLOAD_5" : "6",
        "PAYLOAD_6" : "7",
        "PAYLOAD_7" : "8",
        "PAYLOAD_8" : "9",
        "PAYLOAD_9" : "0",
        "PAYLOAD_ASCIISLICE" : "function asciiSlice() { [native code] }",
        "PAYLOAD_BASE64SLICE" : "function base64Slice() { [native code] }",
        "PAYLOAD_LATIN1SLICE" : "function latin1Slice() { [native code] }",
        "PAYLOAD_HEXSLICE" : "function hexSlice() { [native code] }",
        "PAYLOAD_UCS2SLICE" : "function ucs2Slice() { [native code] }",
        "PAYLOAD_UTF8SLICE" : "function utf8Slice() { [native code] }",
        "PAYLOAD_ASCIIWRITE" : "function asciiWrite() { [native code] }",
        "PAYLOAD_BASE64WRITE" : "function base64Write() { [native code] }",
        "PAYLOAD_LATIN1WRITE" : "function latin1Write() { [native code] }",
        "PAYLOAD_HEXWRITE" : "function hexWrite() { [native code] }",
        "PAYLOAD_UCS2WRITE" : "function ucs2Write() { [native code] }",
        "PAYLOAD_UTF8WRITE" : "function utf8Write() { [native code] }",
        "PAYLOAD_COPY" : "function copy() { [native code] }",
...
}

Maybe that's a better way to display them:

{
...
        "PAYLOAD" : "<Buffer 01 02 03 04 05 06 07 08 09 00>",
...
}

Expose log command

The convenience functions are nice, however it would be great if the log command would also be exposed, for easier incorporation in other logging libraries.

Fails to install on Mint 17.3

npm install 

> [email protected] install /home/myproject/node_modules/systemd-journald
> node-gyp rebuild

Package libsystemd was not found in the pkg-config search path.
Perhaps you should add the directory containing `libsystemd.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libsystemd' found
gyp: Call to 'pkg-config --libs-only-l libsystemd' returned exit status 1 while in binding.gyp. while trying to load binding.gyp

The problem is that on Mint 17.3, the package libsystemd-dev doesn't exist, it's actually split up into systemct-*-dev packages:

sudo aptitude search libsystemd-

i   libsystemd-daemon-dev                             - systemd utility library - development files                 
p   libsystemd-daemon-dev:i386                        - systemd utility library - development files                 
i   libsystemd-daemon0                                - systemd utility library                                     
p   libsystemd-daemon0:i386                           - systemd utility library                                     
i A libsystemd-id128-0                                - systemd 128 bit ID utility library                          
p   libsystemd-id128-0:i386                           - systemd 128 bit ID utility library                          
i A libsystemd-id128-dev                              - systemd 128 bit ID utility library - development files      
p   libsystemd-id128-dev:i386                         - systemd 128 bit ID utility library - development files      
i   libsystemd-journal-dev                            - systemd journal utility library - development files         
p   libsystemd-journal-dev:i386                       - systemd journal utility library - development files         
i A libsystemd-journal0                               - systemd journal utility library                             
p   libsystemd-journal0:i386                          - systemd journal utility library                             
i   libsystemd-login-dev                              - systemd login utility library - development files           
p   libsystemd-login-dev:i386                         - systemd login utility library - development files           
i   libsystemd-login0                                 - systemd login utility library                               
p   libsystemd-login0:i386                            - systemd login utility library

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.