errlog 0.3.3 → 0.3.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 11d79f46d2df12286b3049c79c7229ee4f694ccb
4
- data.tar.gz: 12b6ebffab66595105892bc245bc7048e72635de
3
+ metadata.gz: 17e96f6052645fe7624fcde6a74b51d026cd1411
4
+ data.tar.gz: bd1de2e4d3b099273b6431e1f960cd799c991a96
5
5
  SHA512:
6
- metadata.gz: 0610be3f9b72943a602bfe8d537a00f881300693c2d72f6932d7e0a9fa967daf85fbe5741dc9883c310b4bd2af61ea99140d90e04d6f3b4a7850656088f22a49
7
- data.tar.gz: 6443751a6535f965db8538c1ba8fdf3d55fb4c0ff6919c4bda1a5c7cd442d0e5ca9c2594748677ff7946cd89fbc2dc4476015d57e9970045cee0c14a69d4e8eb
6
+ metadata.gz: 50139bfaecb2c2efce08c9e2026c975b5dc5be3c191b5053f5d93db96d2ba8e4b8d2c8b779b73f1332c10062c00a6b549bb69274740157643993e2976b83a3a5
7
+ data.tar.gz: bbc4e3a5e7736f4df68572c4d3ff020fc263e4be04a38c6a315666c5c5eb34a7f613145178d3fd2ce19e9ab51c760d2b4ae32f668855cb3c8533738938a3f808
@@ -1,4 +1,5 @@
1
- Copyright (c) 2012 sergeych
1
+ Copyright (c) 2012 sergeych (Sergey S. Chernov)
2
+ real.sergeych@gmail.com
2
3
 
3
4
  MIT License
4
5
 
data/README.md CHANGED
@@ -1,11 +1,7 @@
1
1
  # Errlog
2
2
 
3
- *ATTENTION!*
4
-
5
- This is a reporting tool tor errlog.co service under development, not yet available fpr public.
6
-
7
-
8
- The rest is a template for not to type it later on. Please ignore.
3
+ The Errlog logging client (http://errorlog.co). with rails & delayed_job integrations. See usage details
4
+ at http://errorlog.co/help/rails. The service is in beta test now.
9
5
 
10
6
 
11
7
  ## Installation
@@ -22,9 +18,45 @@ Or install it yourself as:
22
18
 
23
19
  $ gem install errlog
24
20
 
21
+ More: http://errorlog.co/help/rails
22
+
25
23
  ## Usage
26
24
 
27
- TODO: Write usage instructions here
25
+ Errlog.configure(...) # visit the link above for help on credentials
26
+
27
+ Errlog.protect { |ctx|
28
+ # Any exception from here will be caught and reported
29
+ ctx.extra_data = "Anything you want to attach to trace/warning/error report"
30
+ }
31
+
32
+ Errlog.protect_rethrow { |ctx|
33
+ # Same as above, but the exception will be rethrown
34
+ }
35
+
36
+ Errlog.trace "So far so good"
37
+
38
+ # some syntax sugar
39
+
40
+ x == y or Errlog.error "Something is wrong" do |ctx|
41
+ ctx.expected_value = x
42
+ ctx.real_one = y
43
+ }
44
+
45
+ begin
46
+ ...
47
+ rescue Exception => e
48
+ Errlog.context.exception e
49
+ ...
50
+ end
51
+
52
+ logger = Errlog::ChainLogger.new
53
+ logger.info "This string will be collected"
54
+
55
+
56
+ Consult API docs for more: http://rdoc.info/github/sergeych/errlog/master/frames. Configuration
57
+ details are available at http://errorlog.co/help/rails
58
+
59
+ As the service is under active development, be sure to `bundle update errlog` regularly.
28
60
 
29
61
  ## Contributing
30
62
 
@@ -2,23 +2,32 @@ require 'logger'
2
2
 
3
3
  module Errlog
4
4
 
5
+ # The chain logger is used to collect data for Errlog context (current context is used)
6
+ # and optionally pass through logs to previous logger (that's why chain).
7
+ # Potential problem: you can not bound logger to some context instance so far. Leave
8
+ # issue at the github if you'll need
5
9
  class ChainLogger < Logger
6
10
 
11
+ # @return previous logger instance if any
7
12
  attr_reader :prev_logger
8
13
 
14
+ # Create instance optionally atop of an existing logger.
9
15
  def initialize prev=nil
10
16
  @prev_logger = prev
11
17
  super(nil)
12
18
  end
13
19
 
20
+ # Set log level
14
21
  def level= l
15
22
  @prev_logger and @prev_logger.level = l
16
23
  end
17
24
 
25
+ # @return current log level
18
26
  def level
19
27
  @prev_logger and @prev_logger.level
20
28
  end
21
29
 
30
+ # Standard add log method, see (Logger#add)
22
31
  def add severity, message = nil, progname = nil
23
32
  message = yield if block_given?
24
33
  @prev_logger and @prev_logger.add(severity, message, progname)
@@ -1,11 +1,17 @@
1
1
  module Errlog
2
+ # This module could be extended for easy access to constants and severity test
3
+ # helpers
2
4
  module Constants
3
5
 
6
+ # @!group severity constants
7
+
4
8
  ERROR = 100
5
9
  WARNING = 50
6
- NOT_FOUND = 50
10
+ NOT_FOUND = 49
7
11
  TRACE = 1
8
12
 
13
+ # @!endgroup
14
+
9
15
  def is_error?(code)
10
16
  code >= ERROR
11
17
  end
@@ -1,8 +1,22 @@
1
1
  require 'hashie'
2
2
 
3
3
  module Errlog
4
+ # Context is a central object in Errlog reporting. It is used to collect and
5
+ # report necessary data about trace, warning and exception. It also carries
6
+ # arbitrary extra data you might want to see in the errlog report, you just
7
+ # assign it to the Context object much like with OpenStruct:
8
+ #
9
+ # context = Errlog::clear_context
10
+ # context.instance_name = 'www143'
11
+ # # ...
12
+ # context.trace "Something just happened"
4
13
  class Context < Hashie::Mash
5
14
 
15
+ # Perform a given block rescuing and reporting any uncaught exception.
16
+ # Exception will not be thrown out of the block:
17
+ #
18
+ # @param component_name [String] optional name of the component to report exceptions from
19
+ # @yieldparam ctx the context itself
6
20
  def protect component_name=nil, options={}
7
21
  component_name and self.component_name = component_name
8
22
  begin
@@ -13,35 +27,58 @@ module Errlog
13
27
  end
14
28
  end
15
29
 
30
+ # Perform a given block reporting and rethrowing any uncaught exception (see #protect)
16
31
  def protect_rethrow component_name=nil, &block
17
32
  self.protect component_name, retrhow: true, &block
18
33
  end
19
34
 
35
+ # Report exception.
36
+ #
37
+ # @param [Exception] e exception to report
38
+ # @param [Integer] severity severity to report, some exceptions mught be useful to report as warnings or
39
+ # even traces.
40
+ # @yieldparam context the context itself, you can set more fields in a block
41
+ # @note that exception reports its class and backtrace, so there is no need to provide details
20
42
  def exception e, severity=Errlog::ERROR, &block
21
43
  self.stack = e.backtrace
22
44
  self.exception_class = e.class.name
23
45
  report e.to_s, severity
24
46
  end
25
47
 
48
+ # Report trace. There is a syntax sugar to provide extra information in the block where the context
49
+ # is passed as the parameter:
50
+ #
51
+ # everything_is_ok or context.trace "Not all is ok" do |ctx|
52
+ # ctx.valuable_data = some_value
53
+ # end
54
+ #
55
+ # Reporting methods except #exception uses the caller's stack in the report.
26
56
  def trace text, details=nil, severity=Errlog::TRACE, &block
27
57
  details and self.details = details
28
58
  report text, severity
29
59
  end
30
60
 
61
+ # Report a warning, see {#trace}
31
62
  def warning text, details=nil, severity=Errlog::WARNING, &block
32
63
  details and self.details = details
33
64
  report text, severity
34
65
  end
35
66
 
67
+ # Report an error, see {#trace}
36
68
  def error text, details=nil, severity=Errlog::ERROR, &block
37
69
  details and self.details = details
38
70
  report text, severity, &block
39
71
  end
40
72
 
73
+ # Add a handler that will be called with a context as the sole parameter before reporting.
74
+ # If the context will not be user for reporting, the handler will not be called. Use it
75
+ # to collect additional information that won't be needed otherwise, especially if collecting takes
76
+ # significant resources.
41
77
  def before_report &block
42
78
  (@before_handlers ||= []) << block
43
79
  end
44
80
 
81
+ # Report test with e given severity. See #{trace} for optional block usage.
45
82
  def report text, severity = Errlog::ERROR
46
83
  yield self if block_given?
47
84
 
@@ -67,8 +104,10 @@ module Errlog
67
104
  end
68
105
  end
69
106
 
107
+ # @private
70
108
  MAX_LOG_LINES = 100
71
109
 
110
+ # @private
72
111
  def add_log_record record
73
112
  @log_records ||= []
74
113
  @log_records << record
@@ -1,3 +1,3 @@
1
1
  module Errlog
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: errlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - sergeych
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-07 00:00:00.000000000 Z
11
+ date: 2013-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: boss-protocol
@@ -149,3 +149,4 @@ test_files:
149
149
  - spec/errlog_spec.rb
150
150
  - spec/packager_spec.rb
151
151
  - spec/spec_helper.rb
152
+ has_rdoc: