5 Star 12 Fork 2

ZeroKwok / nlog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-2-Clause

nlog

旨在提供一个高度灵活, 简单易用且速度优良的C++日志模块, 目前应用方向为Windows桌面端应用程序

特性

  1. 异步
  2. 线程安全
  3. 多实例 多个不同的配置产生的实例并输出到不同的文件
  4. 灵活
    1. 支持配置来指定输出风格
    2. 支持配置来指定日志文件大小, 超过自动打印到新文件
    3. 支持配置来指定日志文件数量, 超过自动删除最旧的文件
    4. 支持C/C++风格混搭输出风格
    5. 支持同时使用宽字节, 多字节字符串(遇到多字节宽字节组合时不用再自己转码了)
  5. 性能 据不严格的测试,多线程并发写40w条记录到一个文件的时间是1.343秒.
  6. 国际化 全程使用Unicode
  7. 支持x64

快速上手

#include "nlog.h"                                                //包含头文件, 并连接对应的lib
...
_NLOG_ERR("Hello, %s", "nlog") << " Now Time:" << nlog::time;    //c,c++风格混搭格式化输出
_NLOG_WAR(L"借用一句话")        << " 此后我们的征程便是星辰大海...";
...
_NLOG_SHUTDOWN();                                                //最后执行清理

组织结构

./
 ├ example                              - 示例代码目录
 ├ include                              - 外部引用所需的头文件
 ├ src                                  - 源文件
 ├ msvc08
 |   ├ nlog.vcproj                      - vs2005 动态库项目文件 
 |   └ nloglib.vcproj                   - vs2005 静态库项目文件
 └ msvc10                               
     ├ nlog.sln                         - vs2010 解决方案
     ├ nlog.vcproj                      - vs2010 动态库项目文件
     ├ nloglib.vcproj                   - vs2010 静态库项目文件
     └ example
         ├ 01_simple.vcxproj            - 最简单的使用例子(使用动态库)
         ├ 02_custom_style.vcxproj      - 自定义打印风格的例子(使用静态库)
         ├ 03_multiple_thread.vcxproj   - 多线程并发打印同一文件40w日志
         └ 04_multiple_instance.vcxproj - 多日志实例不同配置打印4个不同的文件

性能损耗

由于nlog能同时支持多字节, 宽字节字符串这增加了使用的灵活度但作为代价牺牲的是内部转码的性能损耗(如果你追求性能, 可以尽量采用宽字节字符串).

更新

  1. 2018-08-03 - 更新example
  2. 2018-08-03 - 提供动态库, 静态库vs2010与vs2005的项目文件
  3. 2018-08-11 - 优化组织结构, 优化性能, 修复静态库中使用导致不稳定的因素
  4. 2018-08-11 - 增加多线程, 多实例的example
  5. 2019-11-12 - 增加日志输出时大小超过限制后自动分割文件的功能
  6. 2019-11-12 - 增加日志输出时文件数量超过限制后自动删除以前文件的功能
  7. 2020-03-13 - 适配x64环境并优化了部分代码

未来期望的特性

  1. 优化性能 - 在不牺牲特性的情况下, 达到每秒80w条输出
  2. 提供动态修改打印配置的途径 - 通过配置文件来设置日志打印风格, 输出目录, 文件名称, 打印等级等一系列设置
Copyright (c) 2018, kwok-jh All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

nlog-旨在提供一个高度灵活, 简单易用且速度优良的C++日志模块 展开 收起
C++
BSD-2-Clause
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/zerokwok/nlog.git
git@gitee.com:zerokwok/nlog.git
zerokwok
nlog
nlog
master

搜索帮助