Logging

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。

不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。 这种做法不免让人悲催,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在了,按照优先级顺序,Log4J自然就被忽略了!不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以通过在MyBatis的配置文件mybatis-config.xml里面添加一项setting(配置)来选择一个不同的日志实现。

 

1 <configuration>
2   <settings>
3     ...
4     <setting name="logImpl" value="LOG4J"/>
5     ...
6   </settings>
7 </configuration>

logImpl可选的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING 或者是实现了接口org.apache.ibatis.logging.Log的类的完全限定类名, 并且这个类的构造函数需要是以一个字符串(String类型)为参数的。 (可以参考org.apache.ibatis.logging.slf4j.Slf4jImpl.java的实现)

你根据需要调用如下的某一方法:

org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging();

如果的确需要调用以上的某个方法,请在其他所有MyBatis方法之前调用它。另外,只有在相应日志实现中存在 的前提下,调用对应的方法才是有意义的,否则MyBatis一概忽略。如你环境中并不存在Log4J,你却调用了 相应的方法,MyBatis就会忽略这一调用,代之默认的查找顺序查找日志实现。

### Python 中日志记录 (logging) 使用方法 在 Python 开发过程中,`logging` 模块被广泛用于跟踪事件的发生情况以便于后续分析和调试。此模块提供了一种结构化的方式来处理不同严重程度的消息,并允许这些消息发送到多个目的地。 #### 创建并配置 Logger 实例 为了开始使用 `logging` 模块,通常会先获取一个 logger 对象: ```python import logging logger = logging.getLogger('my_logger') ``` 可以通过调用 getLogger() 函数来创建一个新的 logger 或者访问已存在的同名 logger [^4]。一旦有了 logger 对象之后,则可以根据需要对其进行进一步的个性化设置,比如设定最低的日志等级、指定输出格式等。 #### 设置日志级别与处理器 日志级别决定了哪些类型的日志会被实际写入文件或其他目标位置;常见的有 DEBUG, INFO, WARNING, ERROR 和 CRITICAL 这五个级别的日志信息。默认情况下,只有 WARN 及以上级别的日志才会显示出来。如果希望改变这一行为,可以这样做: ```python logger.setLevel(logging.DEBUG) console_handler = logging.StreamHandler() file_handler = logging.FileHandler('app.log') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter) logger.addHandler(console_handler) logger.addHandler(file_handler) ``` 上述代码片段展示了如何向 logger 添加控制台和文件两个不同的 handler 来分别处理不同类型或者去处的日志数据流 [^3]。 #### 记录日志条目 当一切准备就绪后就可以利用 logger 发布各种各样的日志了: ```python logger.debug("This is a debug message.") logger.info("Informational message here.") logger.warning("Warning:config file not found!") logger.error("Error occurred.") logger.critical("Critical error! System might be unstable now.") ``` 每一种 log 方法对应着特定的日志级别,在编写应用时应当依据实际情况选择合适的方式来进行日志记录 [^1]。 #### 安全性考虑 值得注意的是,在设计日志系统的过程中还需要考虑到安全性因素。例如,应避免将敏感个人信息或者其他机密资料暴露给未经授权的人士查看。因此建议采取措施保护好存储介质上的原始日志文档,并且谨慎对待任何可能泄露隐私的内容 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值