dima_app_logger 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +0 -0
- data/lib/app_logger.rb +1 -0
- data/lib/app_logger/logger.rb +101 -0
- metadata +98 -0
data/README.rdoc
ADDED
File without changes
|
data/lib/app_logger.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/app_logger/logger'
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
module Dima
|
5
|
+
class AppLogger
|
6
|
+
attr_accessor :_options
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
self._options = {}
|
10
|
+
self._options[:root] = options[:root]
|
11
|
+
self._options[:env] = options[:env]
|
12
|
+
self._options[:name] = options[:name] || ENV["APP_LOGGER_NAME"]
|
13
|
+
if defined?(Rails)
|
14
|
+
self._options[:root] ||= Rails.root
|
15
|
+
self._options[:env] ||= Rails.env
|
16
|
+
end
|
17
|
+
self._options[:env] ||= "development"
|
18
|
+
self._options[:root] ||= Dir.pwd
|
19
|
+
_expire!
|
20
|
+
end
|
21
|
+
|
22
|
+
def _logger
|
23
|
+
unless @logger
|
24
|
+
@logger = if _options[:env] == "test"
|
25
|
+
_create_test_logger
|
26
|
+
elsif ENV["_"] =~ /irb/ || ENV["APP_LOGGER_STDOUT"]
|
27
|
+
_create_stdout_logger
|
28
|
+
else
|
29
|
+
_create_app_logger
|
30
|
+
end
|
31
|
+
end
|
32
|
+
@logger
|
33
|
+
end
|
34
|
+
|
35
|
+
def _create_app_logger
|
36
|
+
name = _options[:env] + "." + (_options[:name] && "#{_options[:name]}.").to_s + _options[:pid].to_s + ".log"
|
37
|
+
name = File.join(self._options[:root], "log", _date_string, name)
|
38
|
+
_mkdir(_log_file)
|
39
|
+
AppLoggerInstance.new(name)
|
40
|
+
end
|
41
|
+
|
42
|
+
def _create_test_logger
|
43
|
+
name = File.join(_options[:root], "log", "test.log")
|
44
|
+
_mkdir(name)
|
45
|
+
AppLoggerInstance.new(name)
|
46
|
+
end
|
47
|
+
|
48
|
+
def _create_stdout_logger
|
49
|
+
AppStdoutLoggerInstance.new
|
50
|
+
end
|
51
|
+
|
52
|
+
def _expired?
|
53
|
+
tm = Time.now.utc
|
54
|
+
rs = _options[:pid] != Process.pid ||
|
55
|
+
_options[:time].day != tm.day ||
|
56
|
+
_options[:time].month != tm.month ||
|
57
|
+
_options[:time].year != tm.year
|
58
|
+
tm = nil
|
59
|
+
rs
|
60
|
+
end
|
61
|
+
|
62
|
+
def _expire!
|
63
|
+
self._options[:pid] = Process.pid
|
64
|
+
self._options[:time] = Time.now.utc
|
65
|
+
if @logger
|
66
|
+
@logger.close if @logger.respond_to?(:close)
|
67
|
+
@logger = nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def _date_string
|
72
|
+
_options[:time].strftime("%Y%m%d")
|
73
|
+
end
|
74
|
+
|
75
|
+
def _mkdir(path)
|
76
|
+
FileUtils.mkdir_p(File.dirname(path))
|
77
|
+
end
|
78
|
+
|
79
|
+
def method_missing(method, *args, &block)
|
80
|
+
puts method.to_s
|
81
|
+
_expire! if _expired?
|
82
|
+
_logger.__send__(method, *args, &block)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class AppLoggerInstance < ::Logger
|
87
|
+
def format_message(level, time, progname, msg)
|
88
|
+
tm = time.utc.strftime("%Y/%m/%d %H:%M:%S") + "." + ("%.03d" % (time.usec / 1000))
|
89
|
+
"#{tm} UTC [#{level.split(//)[0]}] -- #{msg}\n"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class AppStdoutLoggerInstance < ::Logger
|
94
|
+
def initialize
|
95
|
+
super(STDOUT)
|
96
|
+
end
|
97
|
+
def format_message(level, time, progname, msg)
|
98
|
+
msg.to_s
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dima_app_logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Dmitry Galinsky
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-12-22 00:00:00 +03:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rr
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
description: Application logger
|
50
|
+
email: dima.exe@gmail.com
|
51
|
+
executables: []
|
52
|
+
|
53
|
+
extensions: []
|
54
|
+
|
55
|
+
extra_rdoc_files:
|
56
|
+
- README.rdoc
|
57
|
+
files:
|
58
|
+
- README.rdoc
|
59
|
+
- lib/app_logger/logger.rb
|
60
|
+
- lib/app_logger.rb
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: https://github.com/dima-exe/app_logger
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options:
|
67
|
+
- --line-numbers
|
68
|
+
- --main
|
69
|
+
- README.rdoc
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 1.3.7
|
94
|
+
signing_key:
|
95
|
+
specification_version: 3
|
96
|
+
summary: Application logger
|
97
|
+
test_files: []
|
98
|
+
|