Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 单点记录控制器方法_Swift_Logging - Fatal编程技术网

Swift 单点记录控制器方法

Swift 单点记录控制器方法,swift,logging,Swift,Logging,我想记录所有控制器方法调用,包括methodname、methodparams,不想为每个方法写日志。它应该从一点着手。可以用swift编写拦截器方面吗 例如,2016-05-05 09:47:33.927 xxx[58787:27517992]init()方法,使用参数[“xxx”,“yyy”]调用 谢谢。感谢Swift>=2.2: 您可以尝试执行以下操作: print("\(NSDate()) \(#file) \(#line) \(#function) in \(self.dynamic

我想记录所有控制器方法调用,包括methodname、methodparams,不想为每个方法写日志。它应该从一点着手。可以用swift编写拦截器方面吗

例如,2016-05-05 09:47:33.927 xxx[58787:27517992]init()方法,使用参数[“xxx”,“yyy”]调用


谢谢。

感谢Swift>=2.2

您可以尝试执行以下操作:

 print("\(NSDate()) \(#file) \(#line) \(#function) in \(self.dynamicType)")
您可以使用如下全局方法:

func VerboseLog<T>(object: T, filename: String = #file, line: Int = #line, funcname: String = #function) {
    print("\(NSDate()) \(filename) \(line) \(funcname) in \(object.dynamicType)")
}

日志记录是可以的,但是我如何截获每个方法调用并将其记录在那里,比如AOP中的@Before pointcut。请记住,您也可以使用自定义类对控制器进行子类化,并将此日志添加到ovveride方法中,如viewDidLoad@AlessandroOrnano,这不是OP要求的,在原始问题的第二行中明确提到了这一点。更具体地说,这只是答案的一部分,而不是最重要的部分。好的,我已经更新了答案。我希望你觉得它有用。我读到了关于swizzling的文章。我先试试。如果不能,我会尝试obj-c桥接。我很确定这是不可能的。
MOAspects.hookClassMethodForClass(UIScreen.self, selector:"mainScreen", position:.Before) {
    NSLog("hooked screen!")
}

UIScreen.mainScreen() // -> hooked screen!