strftime for JavaScript
A Stimulus Wrapper for Flatpickr library
TypeScript definitions for strftime
A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.
For ruby and ruby on rails
moment-strftime adds strftime to Moment.js
Timestamp for 64-bit time_t, nanosecond precision and strftime
Comprehensive strftime and strptime implementation.
Ruby SemVer in TypeScript.
Convention over configuration for using Vite in Ruby apps
Like ruby's abbrev module, but in js
Ruby grammar for tree-sitter
Ultra fast realization of javascript strftime function without memory leak
prettier plugin for the Ruby programming language
WebSocket framework for Ruby on Rails.
bootstrap-sass is a Sass-powered version of Bootstrap 3, ready to drop right into your Sass powered applications.
Convention over configuration for using Vite in Rails apps
JavaScript client for graphql-ruby
realistic password strength estimation
A JavaScript time formatter and parser inspired by strftime and strptime.
Provide I18n to your React Native application
Prism Ruby parser
A pure JavaScript implementation of Sass.
Ruby on Rails unobtrusive scripting adapter
Monkeypatch'ing Time object in Ruby and adding functionality http://www.ruby-doc.org/core-2.1.4/Time.html#method-i-strftime
Ruby has useful formatter methods, like Time#strftime. This gem allows you to define your own similar methods on any Ruby object easily, using a nice little DSL.
# Fancy Logger An easily customizable logger with style. ## Install ### Bundler: `gem 'fancy_logger'` ### RubyGems: `gem install fancy_logger` ## Usage Simply use as if you were using the normal Ruby `Logger` class: ```ruby require 'fancy_logger' logger = FancyLogger.new(STDOUT) logger.info "Hello" ``` ### Config The `config` instance method allows you to modify the configuration of the Logger within a DSL. Continuing with our last example: ```ruby logger.config do timestamp_format "%c" styles do info do foreground :yellow blink true end end end logger.debug 'Look here!' logger.info 'Doing things...' logger.warn 'Watch out!' logger.error 'Bad' logger.fatal 'VERY bad' logger.unknown 'Weird unknown stuff' ``` #### Output ![][output_example] ### Config ```ruby # The format of the timestamp in the log. Follows the strftime standards. timestamp_format "%F %r" # On the first logged message, FancyLogger will prepend a help message # containing a list of all the severities (debug, info, warn, etc) styled # according to your config as reference. # You can disable this by setting the below option to false. show_help_message true # Under styles, you have a configuration for each severity. # Each severity has a configuration with the following valid options: # Key: foreground # Value: # :default, :black, :red, :green, :yellow, :blue, :magenta, :cyan, :white # # Key: background # Value: # :default, :black, :red, :green, :yellow, :blue, :magenta, :cyan, :white # # Key: reset # Value: true or false # # Key: bright # Value: true or false # # Key: italic # Value: true or false # # Key: underline # Value: true or false # # Key: # blink # Value: true or false # # Key: inverse # Value: true or false # # Key: hide # Value: true or false styles do debug do foreground :black background :cyan end info do foreground :default background :default end warn do foreground :yellow background :default blink true end error do foreground :red background :default end fatal do foreground :black background :red bold true underline true end unknown do foreground :black background :white underline true end end ``` ## Contributing * 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 or switch to a testing/unstable/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 gemspec. ## Copyright Copyright © 2012 Ryan Scott Lewis <ryan@rynet.us>. The MIT License (MIT) - See LICENSE for further details. [output_example]: http://oi44.tinypic.com/sfwlkp.jpg
Log2json lets you read, filter and send logs as JSON objects via Unix pipes. It is inspired by Logstash, and is meant to be compatible with it at the JSON event/record level so that it can easily work with Kibana. Reading logs is done via a shell script(eg, `tail`) running in its own process. You then configure(see the `syslog2json` or the `nginxlog2json` script for examples) and run your filters in Ruby using the `Log2Json` module and its contained helper classes. `Log2Json` reads from stdin the logs(one log record per line), parses the log lines into JSON records, and then serializes and writes the records to stdout, which then can be piped to another process for processing or sending it to somewhere else. Currently, Log2json ships with a `tail-log` script that can be run as the input process. It's the same as using the Linux `tail` utility with the `-v -F` options except that it also tracks the positions(as the numbers of lines read from the beginning of the files) in a few files in the file system so that if the input process is interrupted, it can continue reading from where it left off next time if the files had been followed. This feature is similar to the sincedb feature in Logstash's file input. Note: If you don't need the tracking feature(ie, you are fine with always tailling from the end of file with `-v -F -n0`), then you can just use the `tail` utility that comes with your Linux distribution.(Or more specifically, the `tail` from the GNU coreutils). Other versions of the `tail` utility may also work, but are not tested. The input protocol expected by Log2json is very simple and documented in the source code. ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is included with the Log2json gem. If the binary doesn't work for your distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it can be found in the src/ directory of the installed gem), and then replace the bin/tail binary in the directory of the installed gem with your version of the binary. ** P.S. If you know of a way to configure and compile ONLY the tail program in coreutils, please let me know! The reason I'm not building tail post gem installation is that it takes too long to configure && make because that actually builds every utilties in coreutils. For shipping logs to Redis, there's the `lines2redis` script that can be used as the output process in the pipe. For shipping logs from Redis to ElasticSearch, Log2json provides a `redis2es` script. Finally here's an example of Log2json in action: From a client machine: tail-log /var/log/{sys,mail}log /var/log/{kern,auth}.log | syslog2json | queue=jsonlogs \ flush_size=20 \ flush_interval=30 \ lines2redis host.to.redis.server 6379 0 # use redis DB 0 On the Redis server: redis_queue=jsonlogs redis2es host.to.es.server Resources that help writing log2json filters: - look at log2json.rb source and example filters - http://grokdebug.herokuapp.com/ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime
Log2json lets you read, filter and send logs as JSON objects via Unix pipes. It is inspired by Logstash, and is meant to be compatible with it at the JSON event/record level so that it can easily work with Kibana. Reading logs is done via a shell script(eg, `tail`) running in its own process. You then configure(see the `syslog2json` or the `nginxlog2json` script for examples) and run your filters in Ruby using the `Log2Json` module and its contained helper classes. `Log2Json` reads from stdin the logs(one log record per line), parses the log lines into JSON records, and then serializes and writes the records to stdout, which then can be piped to another process for processing or sending it to somewhere else. Currently, Log2json ships with a `tail-log` script that can be run as the input process. It's the same as using the Linux `tail` utility with the `-v -F` options except that it also tracks the positions(as the numbers of lines read from the beginning of the files) in a few files in the file system so that if the input process is interrupted, it can continue reading from where it left off next time if the files had been followed. This feature is similar to the sincedb feature in Logstash's file input. Note: If you don't need the tracking feature(ie, you are fine with always tailling from the end of file with `-v -F -n0`), then you can just use the `tail` utility that comes with your Linux distribution.(Or more specifically, the `tail` from the GNU coreutils). Other versions of the `tail` utility may also work, but are not tested. The input protocol expected by Log2json is very simple and documented in the source code. ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is included with the Log2json gem. If the binary doesn't work for your distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it can be found in the src/ directory of the installed gem), and then replace the bin/tail binary in the directory of the installed gem with your version of the binary. ** P.S. If you know of a way to configure and compile ONLY the tail program in coreutils, please let me know! The reason I'm not building tail post gem installation is that it takes too long to configure && make because that actually builds every utilties in coreutils. For shipping logs to Redis, there's the `lines2redis` script that can be used as the output process in the pipe. For shipping logs from Redis to ElasticSearch, Log2json provides a `redis2es` script. Finally here's an example of Log2json in action: From a client machine: tail-log /var/log/{sys,mail}log /var/log/{kern,auth}.log | syslog2json | queue=jsonlogs \ flush_size=20 \ flush_interval=30 \ lines2redis host.to.redis.server 6379 0 # use redis DB 0 On the Redis server: redis_queue=jsonlogs redis2es host.to.es.server Resources that help writing log2json filters: - look at log2json.rb source and example filters - http://grokdebug.herokuapp.com/ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime