← Back to team overview

sikuli-driver team mailing list archive

[Bug 1350735] Re: [request] want options to redirect Sikuli's log messages to my own logging

 

OK. I did not realize the beta release  was the one being updated
nightly.

I tried it with the updated jar. It could not get it to work. 
Below is the code I added (I also tried strings 'info' instead of symbols :info):
$log.info $log.methods.include?(:info)
Debug.setLoggerNoPrefix($log)
Debug.setLoggerInfo(:info)
Debug.setLoggerDebug(:debug)
Debug.setLoggerAction(:info)
Debug.setLoggerError(:error)

When I run this, I get the following:

INFO  14-08-02 15:26:22 TrueClass: true
[error] Debug: setLoggerInfo: redirecting to info failed: 
org.jruby.RubyObject.info(java.lang.String)
[log] CLICK on L(27,10)@S(0)[0,0 1440x900]
[log] CLICK on L(306,707)@S(0)[0,0 1440x900]

I also tried the following, but get the same results:
  Debug.setLogger($log)
  Debug.setLoggerAll('info')


On the gem front, something is really strange.  I cleaned up and reinstalled the gem repeatedly, but the newly installed gem always has the capital 'SikuliX', even the the source on the rubygems.org displays 'Sikulix'. 
I manually downloaded and installed the gem with the same result. 
The source and downloaded gem both have version 1.1.01.  
Is it possible that the source code was updated without updating the gem version and the updated source not pushed to the repository properly?

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/1350735

Title:
  [request] want options to redirect Sikuli's log messages to my own
  logging

Status in Sikuli:
  In Progress

Bug description:
  A previous thread that is closest to answering my current question is:
      https://answers.launchpad.net/sikuli/+question/248604
  in which RaiMan suggest the usage of a setSikuliXLogCallback

  I searched the net for setSikuliXLogCallback, but the only hit I got
  was that thread.  Hence this question/plea for more detail.

  I recently started looking into Sikuli using IDE first, then I moved onto using standalone Jython, and then finally had the courage to venture into using Ruby, which is the primary language of my test framework.
  I was pleasantly surprised how easy and great the interface was. Kudos to RaiMan and contributors on this great tool.

  Now, onto my question...
  I can redirect the java output to a single log file via Debug.setLogFile(log_file). 
  My test framework, however, uses Log4R which direct the log output to multiple files as well as the console. 
  Ideally I would like to redirect the logging requests to my logger to do it's thing, so that I can get all the output like:
  [LOG] CLICK on L(27,10)@S(0)[0,0 1440x900]
  in the standard log files.

  I kind-a implemented a workaround that does this as follows:
  1. I put in a one-line callback patch in the native_exception_protect() method  in the sikulix.rb  file, like this:
              m.bind(self).call(*args)  # previous existing line
              SikuliX4Ruby.post_region_callback(m) if SikuliX4Ruby.respond_to?(:post_region_callback)  # line added

  2.  Redirected the java logs to a temp file first, by defining and calling the following:
  module SikuliLib
     def self.log_file=(log_file)
      @@log_file = log_file
      Debug.setLogFile(log_file)
  end

  3.  Captured the original logoutput and logged it via myLogger as such:
  module SikuliX4Ruby
    def self.post_region_callback(method = nil, obj =nil)
      file = SikuliLib.log_file
      File.readlines(file).each { |line| myLogger.info(line.chomp) } if File.size?(file)
      FileUtils.rm file
    end
  end

  My workaround does the trick for now, but I'm not happy about the fact that I had to copy and patch the sikulix.rb file.
  I would rather not muck with original SikuliX distribution files and use a callback that is officially supported, if there is one (The previous question thread hinted that there might be one already.)

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1350735/+subscriptions


References