let filesize = ref 0
let mutex = Mutex.create ()
-let output_common t ?(raw=false) ?(key="") ?(extra="") priority (message: string) =
+let output_common t ?(raw=false) ?(syslog_time=false) ?(key="") ?(extra="") priority (message: string) =
let result_string = ref "" in
let construct_string withtime =
(*let key = if key = "" then [] else [ key ] in
| Info -> Syslog.Info
| Warn -> Syslog.Warning
| Error -> Syslog.Err in
- Syslog.log Syslog.Daemon sys_prio ((construct_string false) ^ "\n")
+ let facility = try Syslog.facility_of_string k with _->Syslog.Daemon in
+ Syslog.log facility sys_prio ((construct_string syslog_time) ^ "\n")
| Stream s -> Mutex.execute s.mutex
(fun () ->
match !(s.channel) with
let output t ?(key="") ?(extra="") priority (message: string) =
ignore(output_common t ~key ~extra priority message)
-let output_and_return t ?(raw=false) ?(key="") ?(extra="") priority (message: string) =
- output_common t ~raw ~key ~extra priority message
+let output_and_return t ?(raw=false) ~syslog_time ?(key="") ?(extra="") priority (message: string) =
+ output_common t ~raw ~syslog_time ~key ~extra priority message
let log t level (fmt: ('a, unit, string, unit) format4): 'a =
let b = (int_of_level t.level) <= (int_of_level level) in
(** {2 Raw output functions} *)
val output : t -> ?key:string -> ?extra:string -> level -> string -> unit
-val output_and_return : t -> ?raw:bool -> ?key:string -> ?extra:string -> level -> string -> string
+val output_and_return : t -> ?raw:bool -> syslog_time:bool -> ?key:string -> ?extra:string -> level -> string -> string
(** {2 Pretty output functions} *)
List.iter (fun t -> Log.output t ~key ~extra level s) l) fmt
)
-let log_and_return key level ?(raw=false) ?(extra="") (fmt: ('a, unit, string, string) format4): 'a =
+let log_and_return key level ?(raw=false) ~syslog_time ?(extra="") (fmt: ('a, unit, string, string) format4): 'a =
log_common key level ~extra ~ret_fn1:(fun s->s) fmt
~ret_fn2:(fun l ->
let ret_str = ref "" in
Printf.kprintf (fun s ->
- List.iter (fun t -> ret_str := Log.output_and_return t ~raw ~key ~extra level s) l; !ret_str) fmt
+ List.iter (fun t -> ret_str := Log.output_and_return t ~raw ~syslog_time ~key ~extra level s) l; !ret_str) fmt
)
let error t ?extra (fmt: ('a , unit, string, unit) format4) =
log t Log.Error ?extra fmt
let audit t ?raw ?extra (fmt: ('a , unit, string, string) format4) =
- log_and_return t Log.Info ?raw ?extra fmt
+ log_and_return t Log.Info ?raw ~syslog_time:true ?extra fmt
val log_and_return :
string ->
Log.level ->
- ?raw:bool -> ?extra:string -> ('a, unit, string, string) format4 -> 'a
+ ?raw:bool -> syslog_time:bool -> ?extra:string -> ('a, unit, string, string) format4 -> 'a
val debug : string -> ?extra:string -> ('a, unit, string, unit) format4 -> 'a
val info : string -> ?extra:string -> ('a, unit, string, unit) format4 -> 'a
val warn : string -> ?extra:string -> ('a, unit, string, unit) format4 -> 'a
(* external init : string -> options list -> facility -> unit = "stub_openlog" *)
external log : facility -> level -> string -> unit = "stub_syslog"
external close : unit -> unit = "stub_closelog"
+
+exception Unknown_facility of string
+let facility_of_string s =
+ match s with
+ |"auth"->Auth
+ |"authpriv"->Authpriv
+ |"cron"->Cron
+ |"daemon"->Daemon
+ |"ftp"->Ftp
+ |"kern"->Kern
+ |"local0"->Local0
+ |"local1"->Local1
+ |"local2"->Local2
+ |"local3"->Local3
+ |"local4"->Local4
+ |"local5"->Local5
+ |"local6"->Local6
+ |"local7"->Local7
+ |"lpr"->Lpr
+ |"mail"->Mail
+ |"news"->News
+ |"syslog"->Syslog
+ |"user"->User
+ |"uucp"->Uucp
+ |_-> raise (Unknown_facility s)
external close : unit -> unit = "stub_closelog"
+val facility_of_string : string -> facility