1234567891011121314151617181920212223242526272829303132333435363738(*
* Copyright (c) 2016 Docker Inc
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*)letppf,flush=letb=Buffer.create255inletflush()=lets=Buffer.contentsbinBuffer.clearb;sinFormat.formatter_of_bufferb,flushletreporter~client()=letreport_srclevel~overkmsgf=(* TODO: add a monotonic clock here *)letmessage=Asl.Message.create()inletlevel=matchlevelwith|Logs.App->`Alert|Logs.Error->`Err|Logs.Warning->`Warning|Logs.Info->`Notice|Logs.Debug->`Debuginletk_=Asl.log~clientmessagelevel(flush());over();k()inmsgf@@fun?header?tags:_fmt->matchheaderwith|None->Format.kfprintfkppf("@["^^fmt^^"@]@.")|Someh->Format.kfprintfkppf("[%s] @["^^fmt^^"@]@.")hin{Logs.report}