我正在编写一个简单的 Groovy 应用程序,它需要进行一些日志记录。如何记录事物的实际属性将取决于特定的环境。例如,在开发时我只想登录到控制台,在测试和生产中我可能想写入文件,而在生产中我可能想为最严重的事件发送电子邮件。
现在我在做什么看起来像这样:
import org.apache.log4j.Logger
import org.apache.log4j.PropertyConfigurator
class BaseClass {
protected config
static Logger logger = Logger.getLogger(BaseClient.class)
def BaseClass(env) {
def configFilePath = // whatever
config = new JsonSlurper().parseText(configFile.text)[options.env]
def logConfigFilePath = ['somelogdir', config.log_file].join(File.separator)
PropertyConfigurator.configure(logConfigFilePath)
}
}
然后我所有需要进行日志记录的类都继承自BaseClass
.
通过这种方式,我可以为每个环境指定不同的文件名,然后我可以从那里读取日志配置。但它似乎有很多样板,并迫使我使用可能不理想的层次结构。
另一方面,在这里我看到我可以获得一个带有简单注释的记录器。
有没有办法根据环境获取不同的记录器 - 可以在运行时设置?