File: Rakefile

package info (click to toggle)
ruby-lumberjack 2.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 956 kB
  • sloc: ruby: 7,957; makefile: 2
file content (86 lines) | stat: -rw-r--r-- 2,463 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
begin
  require "bundler/setup"
rescue LoadError
  puts "You must `gem install bundler` and `bundle install` to run rake tasks"
end

require "bundler/gem_tasks"

task :verify_release_branch do
  unless `git rev-parse --abbrev-ref HEAD`.chomp == "main"
    warn "Gem can only be released from the main branch"
    exit 1
  end
end

Rake::Task[:release].enhance([:verify_release_branch])

require "rspec/core/rake_task"

RSpec::Core::RakeTask.new(:spec)

task default: :spec

desc "run the specs using appraisal"
task :appraisals do
  exec "bundle exec appraisal rake spec"
end

namespace :appraisals do
  desc "install all the appraisal gemspecs"
  task :install do
    exec "bundle exec appraisal install"
  end
end

namespace :profile do
  desc "Profile logger CPU usage. Set LOGGER=Logger to profile the standard libary logger. Set LOG_LEVEL=warn to profile with a higher log level."
  task :cpu do |t, args|
    require "ruby-prof"
    require_relative "lib/lumberjack"

    out = StringIO.new
    logger_class = (ENV["LOGGER"] == "Logger") ? Logger : Lumberjack::Logger
    log_level = ENV.fetch("LOG_LEVEL", "debug")
    logger = logger_class.new(out, level: log_level)
    message = "foobar"

    result = RubyProf::Profile.profile do
      1000.times { logger.info(message) }
    end
    printer = RubyProf::FlatPrinter.new(result)
    printer.print($stdout)
  end

  desc "Profile logger memory usage. Set LOGGER=Logger to profile the standard libary logger. Set LOG_LEVEL=warn to profile with a higher log level."
  task :memory do |t, args|
    require "memory_profiler"
    require_relative "lib/lumberjack"

    out = StringIO.new
    logger_class = (ENV["LOGGER"] == "Logger") ? Logger : Lumberjack::Logger
    log_level = ENV.fetch("LOG_LEVEL", "debug")
    logger = logger_class.new(out, level: log_level)
    message = "foobar"

    MemoryProfiler.report do
      1000.times { logger.info(message) }
    end.pretty_print
  end
end

namespace :colors do
  desc "Print the color codes for each severity level"
  task :print do
    require_relative "lib/lumberjack"

    logger = Lumberjack::Logger.new($stdout, level: :trace, template: "{{severity(emoji)}} {{severity(padded)}} {{message}}", colorize: true)
    logger.trace("Test message")
    logger.debug("Test message")
    logger.info("Test message")
    logger.warn("Test message")
    logger.error("Test message")
    logger.fatal("Test message")
    logger.unknown("Test message")
  end
end