log4net和SQL Server 2000

2023-10-31

log4net是在项目中很常用的一个日志工具,用来记录系统的各种信息和一些异常情况. log4net可以把信息以各种方式输出.关于log4net的介绍和使用,官方网站上有详细的说明.

今天在使用log4net的时候遇到几个问题,想和大家讨论一下. 以log4net官网上的那个例子为例:
配置文件如下:

   1<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
2    <bufferSize value="100" />
3    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
4    <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
5    <commandText value="Insert INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
6    <parameter>
7        <parameterName value="@log_date" />
8        <dbType value="DateTime" />
9        <layout type="log4net.Layout.RawTimeStampLayout" />
10    </parameter>
11    <parameter>
12        <parameterName value="@thread" />
13        <dbType value="String" />
14        <size value="255" />
15        <layout type="log4net.Layout.PatternLayout">
16            <conversionPattern value="%thread" />
17        </layout>
18    </parameter>
19    <parameter>
20        <parameterName value="@log_level" />
21        <dbType value="String" />
22        <size value="50" />
23        <layout type="log4net.Layout.PatternLayout">
24            <conversionPattern value="%level" />
25        </layout>
26    </parameter>
27    <parameter>
28        <parameterName value="@logger" />
29        <dbType value="String" />
30        <size value="255" />
31        <layout type="log4net.Layout.PatternLayout">
32            <conversionPattern value="%logger" />
33        </layout>
34    </parameter>
35    <parameter>
36        <parameterName value="@message" />
37        <dbType value="String" />
38        <size value="4000" />
39        <layout type="log4net.Layout.PatternLayout">
40            <conversionPattern value="%message" />
41        </layout>
42    </parameter>
43    <parameter>
44        <parameterName value="@exception" />
45        <dbType value="String" />
46        <size value="2000" />
47        <layout type="log4net.Layout.ExceptionLayout" />
48    </parameter>
49</appender>
50
对于其中的<buffersize value=100>是指当log信息达到100条时, log信息就会被写到数据库中,但是当我设置value=2时,我发现当有两条log信息时,信息并没有被写到数据库中,要到第三条log信息产生时,前两条log信息才被写到数据中,继续有新的log信息生成时也是同样的情况。那我就觉得log4net实现buffersize的机制是当有一条新的log信息产生时,系统会检查已存在的信息是否达到buffersize了,如果到了,那就把已经存在的Log信息写到数据中,而最新的那条log信息并没有被写到数据库中。

log4net通常也被用来记录系统的各种异常信息,也非常方便。但是不知道log4net本生有异常时,似乎并没有任何异常信息被记录下来(也可能是我不知道)。以上面的配置信息为例,“@message"的长度被设置为4000,但是如果数据库中字段的长度没有4000,比如250。这种设置情况很少,但是确实是一个问题。而这个时候,buffersize value值不是0,而是比如100。那么当第101条log信息产生时,系统就会开始把log信息写到数据中。而其中第一条的message信息的长度超过250,这个时候就会发生异常,从这个时候开始,所有的log信息就都不会被写到数据中了。也不会有任何异常信息抛出来。不知道是我的认识不够深入呢,还是这个真的是个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log4net和SQL Server 2000 的相关文章

随机推荐

  • 阿里微服务架构Spring Cloud Alibaba Nacos实战

    Spring Cloud Alibaba Nacos 1 常用特性 2 注册中心 配置中心对比 3 生态图 4 安装 5 名词解析 6 代码实战 注册中心 配置中心 nacos官方文档 https nacos io zh cn docs q
  • multipart/form-data格式接口调用工具类,实现文件上传

    1 添加依赖
  • Access violation at address 00000000. Read of address 00000000.的解决办法

    Access violation at address 00000000 Read of address 00000000 原理 解决办法 在使用spacesniffer查看C盘空间的时候报错 原理 这个问题是关于Access Violat
  • ZBrush中自动保存在哪里

    在使用 ZBrush 执行任何会话期间 您都可以设置将文件自动保存 并可以修改保存时间间隔 文件保存位置等设置 发生系统错误后要重新启动ZBrush时 可以从临时文件夹或指定的文件夹中恢复备份文件 如果您选择不恢复备份文件 退出应用程序后文
  • Android内存泄漏原因及解决办法

    前言 面试中最常问的就是 你了解Android内存泄漏和Android内存溢出的原因吗 请简述一下 然后大多数的人都能说出原因及其例子和解决办法 但是实际项目中稍微不注意还是会导致内存泄漏 今天就来梳理一下那些是常见的内存泄漏写法和解决方法
  • 1.2小尺度衰落

    书接上文 谈完大尺度衰落 接下来谈谈传输过程中遇到的小尺度衰落 小尺度衰落是指短期内的衰落 具体指移动台移动小距离时 接收信号在短期内的波动 通常可由以下因素决定 多径传播 移动台的速度 周围物体的速度和信号传输带宽 1 2 1 小尺度衰落
  • 基于Flex (词法分析生成器) 构造词法分析器

    备忘录1 阿林的词法分析器答辩内容 前言 我们知道 通过一些词法分析生成器工具可以完成一个编译器的词法分析过程 比如说flex 我们可以通过它完成词法分析过程 但是它完成了这个过程并不会将整个词法分析的结果打印出来 因此我们需要使用正则表达
  • 小程序开发之WebSocket

    本文旨在记录如何实现小程序使用websocket接受 推送消息 websocket 是什么 websocket 服务器端和客户端 小程序如何和websocket建立连接 并实现消息推送 接受 websocket是什么 websocket是一
  • 一套干净的企业数据管理系统,拿来直接用

    项目介绍 此项目为企业数据管理系统的后端部分 前端部分请参考vue admin 项目实现了菜单管理 用户管理 角色管理和权限管理四个基础模块 前端菜单管理结合动态路由可自由添加菜单 结合Shiro权限管理实现了菜单和按钮的权限控制 前端采用
  • 简单的坦克

    作业题目 坦克对战游戏AI设计 作业要求 从商店下载游戏 Kawaii Tank 或 其他坦克模型 构建 AI 对战坦克 具体要求 使用 感知 思考 行为 模型 建模 AI 坦克 场景中要放置一些障碍阻挡对手视线 坦克需要放置一个矩阵包围盒
  • python画图渐变颜色的代号_matplotlib画渐变条形图

    官网上的就是这个图 我也看了代码 我也查了很多人写的代码 写的介绍 但是感觉都没有介绍到要点 都是在糊弄 今天本着从我自己的画图理念出发 写一写我的理解 我觉得画图主要的还是数据 数据不行 数据处理的不对 很有可能画不出来图 也导致出来的图
  • 关于安装Ubuntu18.04.5 版本系统无限循环卡在登录界面的解决方案

    关于安装Ubuntu18 04 5 版本系统无限循环卡在登录界面的解决方案 一 处于Ubuntu的登录界面 一 处于Ubuntu的登录界面 1 按Ctrl ALt F1进入命令行模式 输入用户名 密码 登录 2 卸载显卡驱动 sudo ap
  • xyz:function(){....} 相当于function xyz()

    xyz function 相当于function xyz
  • 没有服务器,unity 上传图片到oss服务器生成二维码

    一 前言 最近接了个外包 kinect换装 敬礼上传图片到服务器 返回链接二维码分享 自己没有服务器 问朋友朋友说可以用阿里的oss 直接上传展示 于是研究了下 然后分享下遇到的坑和制作过程 二 重点 这个里面我觉得有两点比较坑 源码中都已
  • HCIP 三层交换机

    一 实现VLAN间通信 在传统的交换机组网中 默认所有网络都处于同一个广播域 带来了许多问题 VLAN技术的提出 满足了二层组网隔离广播域需求 使得属于不同的VLAN间网络无法通信 但不同VLAN之间又存在着互相访问的需求 实际网络部署中一
  • spring-boot mybatis-plus 集成 + 代码生成器自定义controller 模板

    mybatis plus3 x 代码生成器请看以下链接 https blog csdn net qq 33842795 article details 103682488 maven依赖 spring boot 和 thymeleaf 结合
  • 2017-7-28 2-5 编写函数any(s1,s2), 将字符串s2中任一字符在字符串s1中第一次出现的位置作为返回结果,如果s1中不包含s2中的字符,则返回-1

    include
  • 优秀logo设计解析_优秀Logo设计!形/美/意的表现与运用

    文 李艳 作为一种浓缩的 独特的视觉语言 标志设计以其精炼图形 独具美感的视觉特征征和准确的诉求力 传播者特定的信息 标志设计是一门艺术性和实用性共存的设计艺术 它通常以简洁明了 富于张力的视觉效果进行传播 优秀的标志设计具有强烈的视觉冲击
  • 因果推断1

    相关性并不意味着因果关系 这个道理对大家都不陌生 我们如何科学 优雅地做一份关于 因果关系 数据分析呢 在这篇文章里 我们从因果推断对于数据分析的重要性出发 和大家分享一个因果推断的经典框架 一组因果推断的必备假设和一个因果推断的基础方法
  • log4net和SQL Server 2000

    log4net是在项目中很常用的一个日志工具 用来记录系统的各种信息和一些异常情况 log4net可以把信息以各种方式输出 关于log4net的介绍和使用 官方网站上有详细的说明 今天在使用log4net的时候遇到几个问题 想和大家讨论一下