def test_extend_java_class_01(): from java.util.logging import Handler from java.util.logging import LogRecord from java.util.logging import Level lr = LogRecord(Level.ALL, "The first message") # extender object class MyHandler(Handler): "This is MyHandler doc" counter = 0 def isLoggable(self, logrecord): self.counter = self.counter + 1 return self.__super__.isLoggable(logrecord) def sayHello(self): return 'Hello' h = MyHandler() # accessing extender object via this property assert hasattr(h, 'this') assert hasattr(h.this, 'sayHello') assert hasattr(h.this, 'counter') assert hasattr(h.this, 'isLoggable') #accessing java methods or methods from extender object directly assert hasattr(h, 'close') assert hasattr(h, 'flush') assert hasattr(h, 'getEncoding') assert hasattr(h, 'setEncoding') assert h.this.counter == 0 assert h.isLoggable(lr) assert h.this.counter == 1 assert h.isLoggable(lr) assert h.isLoggable(lr) assert h.this.counter == 3 assert 'Hello' == h.this.sayHello() h2 = MyHandler() assert h2.this.counter == 0 assert h2.isLoggable(lr) assert h2.this.counter == 1 assert h.this.counter == 3
def __get_log_record(self, level, clazz, method, message, error, *args): record = JLogRecord(level, message) record.setLoggerName(self.name) record.setMillis(JSystem.currentTimeMillis()) record.setParameters(_get_args_as_java_array(*args)) if self.resource_bundle_name is not None: record.setResourceBundle(self.logger.getResourceBundle()) if clazz is not None: record.setSourceClassName(clazz) if method is not None: record.setSourceMethodName(method) record.setThreadID(int(JThread.currentThread().getId())) if error is not None: if isinstance(error, Throwable): record.setThrown(error) else: ex = exception_helper.convert_error_to_exception() record.setThrown(ex) return record
def _log_category_message(jlogger, message, *args, **kwargs): method = kwargs.get('method_name', None) clazz = kwargs.get('class_name', None) record = JLogRecord(jlogger.getLevel(), message) record.setLoggerName(jlogger.getName()) record.setMillis(JSystem.currentTimeMillis()) record.setParameters(list(*args)) record.setResourceBundle(jlogger.getResourceBundle()) if clazz is not None: record.setSourceClassName(clazz) if method is not None: record.setSourceMethodName(method) record.setThreadID(int(JThread.currentThread().getId())) jlogger.log(record) return