console.setFormatter(formatter)# add the handler to the root logger#为root logger添加handlerlogging.getLogger('').addHandler
本文记录一个 UWP 或 WinUI3 的开发过程中的问题,当开发者调用 AddHandler 时,所需的 Handler 参数类型为 RoutedEventHandler 类型,然而实际上正确类型是需要与所监听事件匹配才能符合预期工作 => { System.Diagnostics.Debug.WriteLine("PointerPressed"); }; AddHandler (PointerPressedEvent, handler, true); } 以上代码是能够通过构建的,原因是 AddHandler 里面的 Handler 参数就是 object 类型的。 => { System.Diagnostics.Debug.WriteLine("PointerPressed"); }; AddHandler (PointerPressedEvent, handler, true); 那日常开发过程中,如何知道 AddHandler 里面的 handler 参数应该传入什么类型的委托呢?
) efan.AddHandler(Poweroff, SecondGearEvent, SecondGearHandler) efan.AddHandler(Poweroff, ThirdGearEvent , ThirdGearHandler) // 1档状态 efan.AddHandler(FirstGear, PowerOffEvent, PowerOffHandler) efan.AddHandler ) efan.AddHandler(FirstGear, ThirdGearEvent, ThirdGearHandler) // 2档状态 efan.AddHandler(SecondGear efan.AddHandler(SecondGear, SecondGearEvent, SecondGearHandler) efan.AddHandler(SecondGear, ThirdGearEvent , ThirdGearHandler) // 3档状态 efan.AddHandler(ThirdGear, PowerOffEvent, PowerOffHandler) efan.AddHandler
handler2 = new AddHandler(Calc.Add); //异步操作接口(注意BeginInvoke方法的不同!) AddHandler handler = (AddHandler)((AsyncResult)result).AsyncDelegate; Console.WriteLine(handler.EndInvoke (result)); Console.WriteLine(result.AsyncState); } } } 委托的类型为AddHandler 必须将异步委托强制转换为 AddHandler。 可以在异步回调函数(类型为 AsyncCallback)中调用 AddHandler.EndInvoke,以获取最初提交的 AddHandler.BeginInvoke 的结果。 ?
Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler setAllowedOrigins("*") .addInterceptors(new MyHandshakeInterceptor()); registry.addHandler Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler (handler(), "/webSocket"); registry.addHandler(handler(), "/webSocket/socketJs").withSockJS()
HTML代码:
JS代码如下:
var img = document.getElementById("img");
EventUtil.addHandler 就会弹出图片的url地址了;
如果在创建新的img元素时,可以为其指定一个事件处理程序,以便图像加载完成后给出提示,此时,最重要的是在指定src属性之前先指定事件;如下代码所示:
EventUtil.addHandler (window,'load',function(){
var img = document.createElement("img");
EventUtil.addHandler(img, (window,'load',function(){
var img = new Image();
EventUtil.addHandler(img,'load',function(e) (window,'load',function(){
var script = document.createElement("script");
EventUtil.addHandler
-- <input type="button" value="+" onclick="<em>addHandler</em>();" /> <input type="button" value="-" onclick var btns = calculator.querySelectorAll('.btn'); // 绑定事件 // + btns[0].onclick = addHandler; //绑定函数名,不要带括号表示执行 btns[i].onclick = function () { switch (this.title) { case 'add': addHandler elem.onclick = function () { switch (this.title) { case 'add': addHandler num2; } // 输出结果 function outputResult(result) { resultOutput.innerHTML = result; } // 加 function addHandler
(getManager())); grpcHandlerRegister.addHandler(new ServiceNameDiscoveryHandler(getManager()) ); grpcHandlerRegister.addHandler(new NetworkAddressRegisterServiceHandler(getManager())); // v2 grpcHandlerRegister.addHandler(new RegisterServiceHandler(getManager())); ())); jettyHandlerRegister.addHandler(new NetworkAddressRegisterServletHandler(getManager())) ; jettyHandlerRegister.addHandler(new ServiceNameDiscoveryServiceHandler(getManager()));
(getManager())); grpcHandlerRegister.addHandler(new ServiceNameDiscoveryHandler(getManager()) // v2 grpcHandlerRegister.addHandler(new RegisterServiceHandler(getManager())); grpcHandlerRegister.addHandler (getManager())); jettyHandlerRegister.addHandler(new InstanceHeartBeatServletHandler(getManager ())); jettyHandlerRegister.addHandler(new NetworkAddressRegisterServletHandler(getManager())) ; jettyHandlerRegister.addHandler(new ServiceNameDiscoveryServiceHandler(getManager()));
logging.basicConfig(level=logging.DEBUG) stream_handler = StreamHandler() # 新建streamhandler对象 logger.addHandler StreamHandler() file_handler = FileHandler('test.log', encoding="utf-8") # 新建一个filehandler logger.addHandler (stream_handler) logger.addHandler(file_handler) logger.debug("debug message") # 将日志同时输出控制台和写入test.log (stream_handler) logger.addHandler(file_handler) logger.debug("debug message") 再次输出日志后,日志格式是 附上常用的记录属性 _logger.addHandler(self._streamHandler) self._logger.addHandler(self.
logging.FileHandler('my_logger.log')# 创建流处理程序stream_handler = logging.StreamHandler()# 将处理程序添加到日志记录器logger.addHandler (file_handler)logger.addHandler(stream_handler)# 设置日志格式logger.formatter = logging.Formatter('%(asctime logging.FileHandler('my_logger.log')# 创建流处理程序stream_handler = logging.StreamHandler()# 将处理程序添加到日志记录器logger.addHandler (file_handler)logger.addHandler(stream_handler)# 设置日志格式logger.formatter = logging.Formatter('%(asctime (file_handler2)logger2.addHandler(stream_handler2)# 设置日志格式logger2.formatter = logging.Formatter('%(asctime
logging ori_logger = logging.getLogger('custom_logger') ori_logger.setLevel(logging.INFO) ori_logger.addHandler logging.INFO) logger.info("learn logging") # 没有配置 Handler,终端不会输出日志 # 为 root logger配置 Handler logger.addHandler logging.root logger.setLevel(logging.INFO) stream_handler = logging.StreamHandler(stream=f) logger.addHandler DEBUG handler = logging.StreamHandler() handler.setLevel(logging.INFO) # handler 的日志等级为 INFO logger.addHandler (file_handler) logger.addHandler(stream_handler) return logger custom_logger = custom_get_logger
but = document.getElementById('but'); function view() { alert("value"); } var eventUtil = { addHandler type,handler); } else { element['on'+type] = null; } } } eventUtil.addHandler (but, 'click', view); <input type="button" id="but" value="Hello"/> 封装了一个名为eventUtil的方法通过调用addHandler
根据其日志级别将该条日志分发给不同handler 其常用函数有: Logger.setLevel() 设置日志级别 Logger.addHandler() 和 Logger.removeHandler( 级别的日志发邮件 常用函数有: setLevel() 设置级别 setFormatter() 设置Formatter logging.FileHandler(参数)创建一个FileHandler logger.addHandler (fh)添加 logging.StreamHandler()创建一个 StreamHandler logger.addHandler(ch)添加 # 创建一个FileHandler,用于写到本地 fh= logging.FileHandler(logname,'a',"utf-8") fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler ,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(formatter) logger.addHandler
lineno)d - %(levelname)s - %(message)s" ) ch.setFormatter(formatter) fh.setFormatter(formatter) logger.addHandler (ch) #将日志输出至屏幕 logger.addHandler(fh) #将日志输出至文件 如果怕文件太大,可以使用循环日志: fh = logging.handlers.RotatingFileHandler /server.log')) ch.setFormatter(LogFormatter()) fh.setFormatter(LogFormatter()) logger.addHandler(ch) #将日志输出至屏幕 logger.addHandler(fh) #将日志输出至文件 app = FastAPI() @app.get("/") async def root(): logger.info (ch) #将日志输出至屏幕 logger.addHandler(fh) #将日志输出至文件 logger = logging.getLogger(__name__) app = FastAPI(
ContextHandlerCollection contextHandlers = new ContextHandlerCollection(); contextHandlers.addHandler (warHandlers); allHandlers.addHandler(contextHandlers); server.setHandler(allHandlers ).put("whitelistedContextPaths", props.getWhitelistedContextPaths()); webAppContextHandlers.addHandler webApiContext = loadWar(webApiWar, "/nifi-api", frameworkClassLoader); webAppContextHandlers.addHandler ).put("whitelistedContextPaths", props.getWhitelistedContextPaths()); webAppContextHandlers.addHandler
document.querySelectorAll("img"); var dragnow=null;//目前被拽着的物体 for(var i=0;i< imgarrs.length;i++ ){ addHandler (imgarrs[i],'dragstart',dragstart); addHandler(imgarrs[i],'dragenter',dragenter); addHandler (imgarrs[i],'dragover',dragover); addHandler(imgarrs[i],'dragleave',dragleave); addHandler (imgarrs[i],'drop',drop); addHandler(imgarrs[i],'dragend',dragend); } function addHandler
__name__ == '__main__': log = logging.getLogger() handler = logging.StreamHandler() log.addHandler log = logging.getLogger() handler = logging.StreamHandler() # StreamHandler是输出到控制台 log.addHandler main__': log = logging.getLogger("console-logger") handler = logging.StreamHandler() log.addHandler log2 = logging.getLogger("file-logger") file_handler = logging.FileHandler("E:/test.log") log2.addHandler logging.Formatter("%(asctime)s %(filename)s %(funcName)s[line:%(lineno)d]%(levelname)s - %(message)s")) log.addHandler
- %(message)s', "%Y-%m-%d %H:%M:%S") fh.setFormatter(formatter) ch.setFormatter(formatter) logger.addHandler (fh) logger.addHandler(ch) 写入日志: >>>logger.info("admin login success") 2017-02-21 11:58:42 - service >>> log.setLevel(logging.INFO) >>> logging.INFO 20 logger可以添加handler, filter和formatter以增强功能: Logger.addHandler 将日志输出到文件: >>> logger = logging.getLogger() >>> fh = logging.FileHandler('test.log', 'w') >>> logger.addHandler name)-6s: %(levelname)-8s %(asctime)-8s %(message)s') >>> handler.setFormatter(formatter) >>> logger.addHandler
我们不妨来看以下例子: import logging logging.root.setLevel(logging.WARNING) logger = logging.getLogger('name') logger.addHandler ) # Handler 的日志等级为 NOTSET handler = logging.StreamHandler() handler.setLevel(logging.NOTSET) logger.addHandler logging.getLogger('name') handler = logging.StreamHandler() handler.setLevel(logging.NOTSET) logger.addHandler (handler) # 未配置 filter 的 handler logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG (handler) # 未配置 filter 的 handler logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG