Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ gem "abrt", :require => false

line into your *Gemfile*.

### Dependencies

This library is `logger` utility from util-linux for logging purposes. Please
make sure it is available on your system for proper functionality.

## Usage

There are several ways how to run any application with ABRT handler enabled.
Expand Down
4 changes: 2 additions & 2 deletions lib/abrt/handler.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
require 'socket'
require 'syslog'
require_relative 'util_linux_logger'
require_relative 'exception'

module ABRT
Expand All @@ -16,7 +16,7 @@ def self.handle_exception(exception)
private

def self.syslog
@syslog ||= Syslog.open 'abrt'
@syslog ||= UtilLinuxLogger.open 'abrt'
end

def self.report(exception, io = nil)
Expand Down
34 changes: 34 additions & 0 deletions lib/abrt/util_linux_logger.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# UtilLinuxLogger is small utility class intended to be drop in replacement for
# Syslog. It uses `logger` command from util-linux project to provide system
# logging facilities.
#
# It implements just minimal interface required by ABRT project.
class UtilLinuxLogger
# :yields: syslog
#
# Open the UtilLinuxLoggersyslog facility.
#
# `ident` is a String which identifies the calling program.
def self.open(ident)
self.new(ident)
end

def initialize(ident)
@ident = ident
end

def notice(format_string, *arguments)
log 'user.notice', format_string, *arguments
end

def err(format_string, *arguments)
log 'user.err', format_string, *arguments
end

private
def log(priority, format_string, *arguments)
IO.popen "logger -p #{priority} -t #{@ident} --socket-errors=off", 'w' do |io|
io.write sprintf(format_string, *arguments)
end
end
end
2 changes: 1 addition & 1 deletion spec/abrt_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
describe 'ABRT' do
context "handles exception in 'abrt.rb' with RubyGems" do
abrt_rb = File.join(File.dirname(__FILE__), '../lib/abrt.rb')
output_message_pattern = /\A#{abrt_rb}:\d+:in `<main>': can't modify frozen Array(: \[1, 2, 3\])? \((FrozenError|RuntimeError)\)\n\Z/
output_message_pattern = /\A#{abrt_rb}:\d+:in [`']<main>': can't modify frozen Array(: \[1, 2, 3\])? \((FrozenError|RuntimeError)\)\n\Z/

it 'disabled' do
expect { system "ruby --disable-gems #{abrt_rb}" }
Expand Down