hoodwink.d enhanced
 

juretta.com

Ruby remote logging | December 31, 2005-->

December 31, 2005
Logger:
# == Synopsis
#
# Simple remote debug class 
#
# == Author
# Stefan Saasen s@juretta.com
#
# == Copyright
# Copyright (c) 2005 juretta.com Stefan Saasen
# Licensed under the same terms as Ruby.
# == Version
# Version 0.1 ($Id: logger.rb 5 2006-01-01 12:51:04Z stefan $)

require 'socket'
require 'singleton'
require 'timeout' 

class SimpleLogger
  include Singleton
  attr_writer :port, :host
  attr :session
  
  def initialize
    @host = "localhost"
    @port = 3333 # !In use: http://www.iana.org/assignments/port-numbers
  end
  
  def method_missing(method, *args)
    if method.to_s =~ /(debug|notice|info|error|warn|fatal)/i
      return self.log(method.to_s, args[0])
    end
	# do nothing 
	false
  end
  
  def log(level, msg)
    begin
	 Timeout::timeout(1) do 
      @session = TCPSocket.new(@host, @port)
      @session.puts Time.new.strftime("%Y-%m-%d %H:%M:%S") + \
      " " + "[" + level.upcase + "]: " + msg + "\n"
      @session.close  
    end
	 rescue => e	
	   return false
	 end
	 true
  end
end


logger = SimpleLogger.instance
#logger.port = 3030
logger.host = "192.168.0.10"
logger.debug "debug called"
logger.info "info called"
logger.fatal "Fatal error"



Log listener:
# == Synopsis
#
# Log listener.
#
# == Usage
# 
#  ruby log_listener.rb [options]
#  Options: -h | --help -> show the help message
#
# == Version
# Version 0.1 ($Id: log_listener.rb 11 2006-01-02 15:17:41Z stefan $)
	
require 'socket'
require 'optparse'
require 'rdoc/usage'

port = 12123 # Default port

options = OptionParser.new
options.banner = "Usage: ruby log_listener.rb [options]"
options.on('-a', '--about', 'Show the about message') { 
  RDoc::usage 
}
options.on('-h', '--help', 'Show the help message') {
  # Show OPtions usage
  puts options.to_s
  exit
}
options.on('-i', '--interactive', 'Set options interactive') {
  print "Bitte geben Sie einen Port für den LogListener an (Default: #{PORT}): "
  port_input = gets.strip
  port =  (port_input =~ /^(\d+)$/) ? port_input : port
}
options.on('-p', '--port PORT', 'Define the port to listen to') { |p| port = p.to_i }

begin
  rest = options.parse(ARGV) #rescue RDoc::usage('usage')
rescue => ex
  STDERR.puts "E: #{ex.message}"
  STDERR.puts options.to_s
  exit 1
end

# Start the LogListener
puts "Starting listener (localhost:#{port})\nPress \"Enter\" to stop!"

server = TCPServer.new(port)
server_thread = Thread.start do
  while (session = server.accept)
    puts session.gets
    session.close
  end
end


STDIN.gets.strip
server_thread.exit
exit

powerbook:~ sts$ ruby log_listener -p 3333
Log Listener in java:
import java.io.*;
import java.net.*;

class LogListener {
   public static void main(String argv[]) throws Exception {
         String clientSentence;
         // change accordingly
         ServerSocket welcomeSocket = new ServerSocket(3333); 

         while(true) {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient = new BufferedReader(
            	new InputStreamReader(connectionSocket.getInputStream()));
            clientSentence = inFromClient.readLine();
            System.out.println(clientSentence);
         }
      }
}
powerbook:~ sts$ java -cp . LogListener

Diggman

1
Stefan says:
Avatar Sun Jan 08 16:40:34 +0100 2006 | #

java -classpath ./log4j-1.2.12.jar org.apache.log4j.net.SimpleSocketServer 3333 simplesocketserver.properties
server SocketServer.properties
----------
log4j.rootCategory=DEBUG,file
log4j.category.org.apache.log4j.net.SocketNode=DEBUG
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%7r %16d %t %c %x – %m%n
log4j.appender.file.MaxBackupIndex=20
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.File=./log/server.log
----------

About

juretta.com is the personal workspace of Stefan Saasen. You can send him an email or read more about this site in the „About“ section.

« Previous entry

Ruby: HTTP Request
posted over 2 years ago

» Next entry

IE 7 User Agent String
posted over 2 years ago

Recent comment

On: “Attachr.com: OpenID support added

You need to kill this spam stuff!

posted about 1 year ago by entropie

Look!

Latest links  RSS  

More...