Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Jan 30 2019 09:25
    haf commented #351
  • Jan 30 2019 09:24
    haf edited #351
  • Jan 30 2019 09:24
    haf edited #351
  • Jan 29 2019 23:09
    rtkelly13 starred logary/logary
  • Jan 29 2019 08:14

    haf on master

    Add System.Data.Odbc to depende… (compare)

  • Jan 29 2019 02:25
    jburman starred logary/logary
  • Jan 28 2019 11:01

    haf on master

    Correcting copy target in Docke… (compare)

  • Jan 28 2019 11:00

    haf on master

    Remove stray extra find stanza … (compare)

  • Jan 28 2019 10:58

    haf on master

    Let Dockerfile copy the artifac… (compare)

  • Jan 28 2019 10:50

    haf on master

    Quicker builds with pre-downloa… Dockerfile with Rutta publish s… (compare)

  • Jan 27 2019 13:01
    haf edited #385
  • Jan 27 2019 12:52

    haf on master

    Test with better .dockerignore … (compare)

  • Jan 27 2019 00:02

    haf on master

    Makefile targets (compare)

  • Jan 26 2019 22:56

    haf on master

    Remove legacy/ folder; noone ha… Remove stray duplicate Version … Remove extra print of locales and 5 more (compare)

  • Jan 26 2019 20:56

    haf on master

    Fix LC_ALL warning from perl (compare)

  • Jan 26 2019 20:35

    haf on master

    Working Dockerfile build and ma… (compare)

  • Jan 26 2019 19:13
    tallpeak starred logary/logary
  • Jan 26 2019 19:02
    haf opened #385
  • Jan 26 2019 18:59

    haf on master

    Add RELEASE_NOTES note and Dock… (compare)

  • Jan 26 2019 18:20
    haf closed #383
@btrepp the previous version of WinPerfCounter has some bug when use with more than one instance. the new version has solved this. you can see the detail in logary/logary@9bcfacd , the old version use x.counter.InstanceName <- instance to change instance, this will initial the instance and the first NextValue is always zero.
Tuomas Hietanen
I have ideological reasons to not install any non-functional-first-programming-language-environments to my machine (aka. now it works, I don't want to break it). So one more vote for getting rid of Ruby.
Aleksander Heintz
So, this is weird. I'm not finding the methods I'm expecting in Logary.Configuration
Anyone experienced this before (and how do I go about fixing it?)
How do the counters work in logary 4.2.1?
I'm after figuring out how much some low-level interop is called, and having a metric like x per second would be fine rather than smashing out heaps of individual messages
So I've deduced the model appears to be creating a metric and pushing values in with update, and summarizing per 'tick'
and there is a Metricconf.create method
But that takes some sort of metric constructor?. Do I have to memo this?. How would I tick values into a Counter?.

So I've noticed there's been a new release of hopac (yay), but logary stable hasn't been updated in a while (okay).

Unfortunately the latest published hopac and logary don't play nice.

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Program' threw an exception. ---> System.TypeInitializationException: The type initializer for '<StartupCode$Epsilon>.$Program' threw an exception. ---> System.MethodAccessException: Attempt by method 'Logary.Supervisor.create(Logary.Logger)' to access method 'Hopac.Job+Global.startIgnore<Microsoft.FSharp.Core.Unit>(Hopac.Job`1<Microsoft.FSharp.Core.Unit>)' failed.
   at Logary.Supervisor.create(Logger logger)
   at Logary.Registry.Advanced.create(LogaryConf conf)
   at Logary.Configuration.Config.RunLogary(LogaryConf conf)
   at Logary.Configuration.Config.WithLogary(String serviceName, FSharpFunc`2 fConf)
   at <StartupCode$Epsilon>.$Program..cctor()
   --- End of inner exception stack trace ---
   at Program..cctor()
   --- End of inner exception stack trace ---
   at Program.main(String[] _arg1)
Henrik Feldt
@btrepp Thanks for reporting. This is accurate. There's a doc/issue about this in the issue tracker (perhaps you)
Wasn't me, think someone independently found it.
Locking to 4 logary keeps me working for now. I would like to upgrade to 5, but currently the beta tag worries me
(I'm a little wary after freyas 4 being rc for over a year)
Henrik Feldt
@btrepp v5 is currently much more stable; it's beta because the licenses need sorting out. See logary/logary#351
Tyler Hartwig
I'm looking at possibly using Logary, can someone give me rough estimates on what pricing with logary usually looks like?
Alexander Prooks
@tylerhartwig Logary is a library and does not have costs. If I'm not missing something

Just playing around with the docs to further consolidate Logary in my head, here's the code-snippet

let main argv = 
    use logary = 
      withLogaryManager "logary test" (
        withTargets [
          Console.create Console.empty "console";
          InfluxDb.create influxConf "influxdb";
        >> withRules [
          Rule.createForTarget ("influxdb");
          Rule.createForTarget ("console");
      ) |> Hopac.Hopac.run

    let logger = Logging.getCurrentLogger()
    let lFun = fun infoEvent -> Logger.log logger LogLevel.Info (fun _ -> Message.eventInfo infoEvent)

    let l = 
      job {
        do! lFun "Logary is weird 1"
        do! timeOutMillis 10 // need a small delay, or it doesn't work
        do! lFun "Logary is weird 2"

    Stream.indefinitely (l <*> (timeOutMillis 5000 )) |> Stream.consume

If you log two things in quick succession to the influx target, you lose 'one' of them

Due to the non-deterministic nature of getting one of them at random, i'm guessing this either an issue with the http implementation in the influxdb target, or with influx. I'll do a quick test to see if influxdb is the problem.
It logs to the console fine
i don't think it's influxdb, since when i use the following, nothing is missed:
let main argv = 
    use httpClient = new HttpClient()
    let mutable no = 0
    // Basic Auth, used with 
    let basicAuth = Encoding.ASCII.GetBytes("ausername:asupersecretpassword")
    httpClient.DefaultRequestHeaders.Authorization <- new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(basicAuth))

    let t = 
        fun ct -> 
            new System.Net.Http.ByteArrayContent(Encoding.ASCII.GetBytes(sprintf "event_info,environment=Development,host=MYHOST,processName=TestInflux test=%A,event=\"test\"" no)), 
      ) |> Hopac.Alt.fromTask

    let t = 
      job {
        let! a = t 
        no <- no + 1
        let! b = t
        no <- no + 1
        return a,b

    Stream.indefinitely(t <&> (timeOutMillis 5000)) |> Stream.consumeFun (fun (x,_) -> System.Console.WriteLine(x))
    System.Console.ReadKey() |> ignore
Proesmans Bert
Hi guys! I'm a big fan of the project, but do have some questions. I'm using C# as interface on .Net 4.6+
what does "internal logging" mean?
@bradder555 Aether had been updated to a newer version which had breaking changes for Logary
@haf i'm trying to understand why there is a "paket_replace" step in the rakefile. Seems to me that the build step can be simplified by removing this step? This way we can build the project without the dependency on ruby?
Henrik Feldt

@bradder555 Hello, sorry about the delay in answering. I've not been monitoring this chat that well, and I'm going to point people to my e-mail address instead in fact.

We have completely removed the ruby dependency for the build; you can now build with both Makefile and dotnet build and fake.

@Bert-Proesmans Internal logging means that Logary tells you about when it sends batches of logs, or when targets crash. You may want that information; for example, if you use Logary for audit logging, it may be a functional requirement for you that your targets are up and sending the audit logs.
It's also helpful when you want to set up a new target and debug what's going on with it.

I'm looking at possibly using Logary, can someone give me rough estimates on what pricing with logary usually looks like?

I've published a price list for commercial use; it's not very pricey and the payment is honour-bound rather than enforced at this point. @tylerhartwig

@aprooks Logary v5 is free for non-commercial use but costs a slight sum when used in production for commercial software https://github.com/logary/logary/blob/master/LICENSE.md#1-pricing
Henrik Feldt
@bradder555 I haven't seen that bug before; I've never experienced that Logary misses things; what version are you on?
Brian Romanko

I have a hopefully simple question. I can't seem to get my logger to display anything below INFO level. I'm using a seemingly simple configuration:

        Config.create "Montclair Server" host
        |> Config.target (Targets.LiterateConsole.create literateConsoleConf "console")
        |> Config.build
        |> Hopac.Hopac.run

I can't seem to find a way to change the default log level. I've tried adding rules and using switchLogLevel and nothing seems to work. Is there anything obvious I'm missing?