Socket
Book a DemoInstallSign in
Socket

universal-access-log-parser

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

universal-access-log-parser

1.0.1
bundlerRubygems
Version published
Maintainers
1
Created
Source

= universal-access-log-parser

== Installation

gem install universal-access-log-parser

== Usage

require 'universal-access-log-parser'

# use predefined parser
parser = UniversalAccessLogParser.apache_combined

# or extend it inline
parser = UniversalAccessLogParser.new do
    # reuse predefined element set
    apache_combined

    # add your own
    string :varnish
    string :varnish_status, :nil_on => '-'
    string :initial_varnish_status, :nil_on => '-'
    integer :cache_hits
    integer :cache_ttl, :nil_on => '-'
    integer :cache_age
end

# or define new parser
UniversalAccessLogParser.parser(:iis) do
    skip_line '^#'
    date_iis :time
    ip :server_ip
    string :method
    string :url
    string :query, :nil_on => '-'
    integer :port
    string :username, :nil_on => '-'
    ip :client_ip
    string :user_agent, :nil_on => '-', :process => lambda{|s| s.tr('+', ' ')}
    integer :status
    integer :substatus
    integer :win32_status
    integer :duration, :process => lambda{|i| i.to_f / 1000}
end
parser = UniversalAccessLogParser.iis

# and iterate entries with #each - won't raise errors
stats = parser.parse_file('access.log').each |entry|
    puts entry.time
    puts entry.cache_age
end

# and get parsing stats
puts stats.failures
puts stats.successes	

# or wait for exception with #each!
parser.parse_file('access.log').each! |entry|
    puts entry.time
    puts entry.cache_age
end # will raise UniversalAccessLogParser::ParsingError on line parsing error

# data elements wont be parsed until accessed, so if you are not interested in some elements you won't waste time
stats = parser.parse_file('access.log').each |entry|
    # entry.time not parsed yet - Time object is not created
    puts entry.time # this will parse time and create Time object - this may raise UniversalAccessLogParser::ElementParsingError!
    puts entry.time # now Time object is returned from cache
    puts entry.cache_age

    # parse all elements
    entry.parse!

    # this will also parse all elements and return hash map of them
    entry.to_hash 
end

# iterate and parse all data with #each_parsed! - if this won't raise, all log lines are parsing fine including elements
parser.parse_file('access.log').each_parsed! |entry|
    puts entry.time # already in cache
    puts entry.cache_age # already in cache
end # will raise on line and element parsing error - try rescuing UniversalAccessLogParser::ParserError to catch both

== Contributing to universal-access-log-parser

  • Please add more common parsers to lib/common_parsers.rb and rspec in spec/common_parsers_spec.rb or send me a gist
  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

== Copyright

Copyright (c) 2011 Jakub Pastuszek. See LICENSE.txt for further details.

FAQs

Package last updated on 18 Oct 2011

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.