From: Tom Bombadil Date: 2007-06-15T18:26:05+09:00 Subject: Re: Log file doesn't show message ------=_Part_59406_9781540.1181899566765 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Great, thanks a lot! However, I just encountered a little bug -> I'd like t= o have the bid on www.securityfocus.com as file name. Thus, for bugtraq id 1 -> 1.txt, for bugtraq id 2 =3D 2.txt, etc... How can I do that? Thanks! On 6/15/07, Florian A=DFmann wrote: > > Hello Tom, > > I'm not sure what this code should do when it's finished but I > rewrote the src, hope this helps: > > # Initialize Logger > require 'logger' > root_logger =3D Logger.new 'root.log' > root_logger.level =3D Logger::INFO > > # Setup at_exit hook > at_exit { root_logger.info 'done.' } > > %w{ rubygems hpricot open-uri }.each { |lib| require lib } > URL_MASK =3D 'http://www.securityfocus.com/bid/%i'.freeze > > tgroup =3D ThreadGroup.new > > root_logger.info 'Parsing SecurityFocus...' > ( 1 .. 3 ).each do |id| > root_logger.info " open #{ URL_MASK % id }" > thread =3D Thread.new do > begin > Hpricot open( URL_MASK % id ) > rescue =3D> error > root_logger.error error.inspect > end > end > tgroup.add thread > end > > tgroup.list.each_with_index do |thread, index| > if doc =3D thread.value > File.open( "#{ index }.txt", 'w+' ) do |file| > file << ( doc/'#vulnerability' ).inner_text > end > end > end > > Sincerely > Florian > > Am 15.06.2007 um 08:34 schrieb Tom Bombadil: > > > Hello, > > > > I'd like to have a logging function which either tells me that the > > text > > files have been created successfully or that provides me an error > > message > > should there have been a fatal error. In doing so I coded the > > following. > > Note, however, that a logfile is created but neither of the comments > > mentioned above are shown. Why? > > > > > > # loads the library modules into the Ruby program > > require 'rubygems' > > require 'hpricot' > > require 'open-uri' > > require 'logger' > > > > # create a log file > > def do_at_exit(message,exit_code,logger) > > at_exit { logger.fatal(message) if exit_code =3D=3D 1 } > > Process.exit(exit_code) > This would exit the Process (your programm) immediatly after calling > do_at_exit... > > > end > > > > logger =3D Logger.new('logfile.log') > > > > # logger formats: DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN > > logger.level =3D Logger::INFO > > do_at_exit("Text files successfully created.\n",1,logger) if > > Process.uid !=3D > > 0 > > > > # creates array object and iterates over the collection passing > > elements one > > at a time to the "{ |e| ... }" block > > %w(rubygems hpricot open-uri).each { |e| require e } > You already requiered these (?) > > > > > # check new entries > > > > # Hpricot() method takes an object and loads the contents into a > > document > > object > > (1..3).each do |id| > > doc =3D Hpricot(open("http://www.securityfocus.com/bid/#{id}")) > > > > # opens a txt-file for each id according to aModeString (w:=3D write > > only, > > truncates existing file to zero > > # length or creates a new file for writing) and returns a new File > > object > > File.open("#{id}.txt", "w+") do |f| > > f << (doc/'#vulnerability').inner_text > > end > > > > end > > > ------=_Part_59406_9781540.1181899566765--