Skip to content

Latest commit

 

History

History
46 lines (29 loc) · 1.88 KB

README.md

File metadata and controls

46 lines (29 loc) · 1.88 KB

SyslogLogging

Build Status Coverage Status

Provides an implementation of AbstractLogger that can log into syslog. The syslog interface is based on Syslogs.jl.

Usage:

julia> using SyslogLogging, Logging

julia> logger = SyslogLogger("myapplication", Logging.Info);

julia> with_logger(logger) do
           @info("hello syslog")
           @warn("hello", p1=100, d=Dict("a"=>1, "b"=>2))
       end

shell> tail -2 /var/log/syslog
Mar 18 18:30:33 tanlto myapplication: Info: hello syslog [Main REPL[4]:2]
Mar 18 18:30:33 tanlto myapplication: Warning: hello [Main REPL[4]:3], [p1=100], [d=Dict("a"=>1,"b"=>2)]

Using Remote Syslog Servers

To use a remote syslog server, provide the connection parameters in addition to the logging identity.

julia> logger = SyslogLogger("myapplication", Logging.Info; host=ip"127.0.0.1", port=514, tcp=false)

Using Multiple Instances

Applications should ideally have only one instance of SyslogLogger, and use keywords instead to differentiate between log identities. But if an application must use multiple instances of SyslogLogger with different identities to operate parallely, it may provide a lock to be used by the loggers. Otherwise, because the underlying syslog library provides only one context, there is a chance that the identities may get mixed up. Providing a ReentrantLock with the lck keyword would prevent that. E.g.:

julia> using SyslogLogging, Logging

julia> lck = ReentrantLock();

julia> logger1 = SyslogLogger("sysloglogger1"; lck=lck);

julia> logger2 = SyslogLogger("sysloglogger2"; lck=lck);