如何用日志记录编写清晰的代码?

Jas*_*Jas 4 oop haskell functional-programming scala

日志记录混乱了我的"美丽"干净简单的短代码.而不是一个简单的

def mymethod = dosomething // scala
Run Code Online (Sandbox Code Playgroud)

我的代码也有所有这些讨厌的日志记录语句,并立即我必须添加新的行和花括号mymethod.现在我不喜欢AOP它只会明确代码 - >不清楚.无论如何要克服这个?我有简单的代码变得不那么简单,但我也需要记录.救命.

如何使这段代码简单明了,还有记录?

Don*_*art 7

函数式编程的典型方法是添加高阶记录组合器.

log :: IO a -> String -> IO a 
log f s = do
    v <- f
    print ("My message: " ++ s)
    return v
Run Code Online (Sandbox Code Playgroud)

这样的包装器增加了对日志消息的功能评估.一般模式是\x y -> .. something with y .. return x


om-*_*nom 5

红隼组合器通常用于此:

def mymethod = dosomething.tap(x => log.info(s"I've done ... and got $x"))
Run Code Online (Sandbox Code Playgroud)

如果您需要为任何方法执行此操作,则会进行scala虚拟化,这允许重载某些语言概念,包括方法调用,我猜.另外,有人可能会建议查看宏观,但我没有足够的能力做出这个假设.