You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.2KB

  1. //! Tools to record and display what's happening in your program
  2. //!
  3. #![feature(test)]
  4. #[macro_use] extern crate slog;
  5. #[macro_use] extern crate money;
  6. extern crate test;
  7. extern crate zmq;
  8. extern crate influent;
  9. extern crate chrono;
  10. extern crate hyper;
  11. extern crate termion;
  12. //extern crate pub_sub;
  13. extern crate sloggers;
  14. extern crate slog_term;
  15. extern crate fnv;
  16. extern crate ordermap;
  17. extern crate decimal;
  18. extern crate uuid;
  19. //extern crate shuteye;
  20. //extern crate chashmap;
  21. extern crate windows;
  22. extern crate pubsub as pub_sub;
  23. use std::sync::Arc;
  24. use chrono::{DateTime, Utc};
  25. use sloggers::Build;
  26. use sloggers::types::{Severity, TimeZone};
  27. use sloggers::file::FileLoggerBuilder;
  28. pub mod influx;
  29. pub mod warnings;
  30. pub mod latency;
  31. //pub type FileLogger = slog::Logger<Arc<slog::SendSyncRefUnwindSafeDrain<Ok=(), Err=slog::private::NeverStruct>>>;
  32. /// converts a chrono::DateTime to an integer timestamp (ns)
  33. ///
  34. pub fn nanos(t: DateTime<Utc>) -> u64 {
  35. (t.timestamp() as u64) * 1_000_000_000_u64 + (t.timestamp_subsec_nanos() as u64)
  36. }
  37. pub fn file_logger(path: &str, level: Severity) -> slog::Logger {
  38. let mut builder = FileLoggerBuilder::new(path);
  39. builder.level(level);
  40. builder.timezone(TimeZone::Utc);
  41. builder.build().unwrap()
  42. }