this is my idea about how to implement this: you have some logger instance (e.g. myLogger), which in turn has some methods like .info, .error, .warning, ...., that accept a string as the one and only parameter.
now you can tell Debug to redirect to your logger using one of these methods: Debug.setLoggerInfo(myLogger, "info"); Debug.setLoggerAction(myLogger, "whatever"); Debug.setLoggerError(myLogger, "whatever"); Debug.setLoggerDebug(myLogger, "whatever"); according to the message groups Settings.ActionLogs ( [log] ), Settings.InfoLogs( [info] ), Settings.DebugLogs ( [debug] ) additionally we have the error group ( [error] ) >From now on messages created using Debug.info() would be redirected to myLogger.info(original_message) using reflection (the reason for the string parameter, to avoid the Java interface/callback implementation overhead). question: should the prefix [.....] be contained in the message or would this be more flexible: Debug.setLogger(myLogger) Debug.setLoggerInfo("info", "new prefix"); Debug.setLoggerAction("whatever", "new prefix"); Debug.setLoggerError( "whatever", "new prefix"); Debug.setLoggerDebug("whatever", "new prefix"); additionally this could be convenient: Debug.setLoggerAll(myLogger, "whatever", "new prefix"); which would return a message [new prefix log/info/debug/error] message ** Changed in: sikuli Status: New => In Progress ** Changed in: sikuli Importance: Undecided => Medium ** Changed in: sikuli Assignee: (unassigned) => RaiMan (raimund-hocke) ** Changed in: sikuli Milestone: None => 1.1.0 -- 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 _______________________________________________ Mailing list: https://launchpad.net/~sikuli-driver Post to : sikuli-driver@lists.launchpad.net Unsubscribe : https://launchpad.net/~sikuli-driver More help : https://help.launchpad.net/ListHelp