当年只会C# 所以写C++就成这样了! log4cplus -> log4net
属实C++不会。 目前帮朋友弄个小项目需要小折腾一下。
c# 一直采用 log4net ,c++的呢,找找有个log4cplus 知识有限,做个通用类吧。别把精力放在这里。
动手创建个静态类。 为了保持一致性,由于好几年前还有一些BCL的动态库。 所以命名规则还采用原来的风格。
BCLLogHelper 静态类。在写项目添加静态类。直接调用就可以 (*_*)
头文件:
// BCLSerialPort.cpp: implementation of the BCLSerialPort class.
// 作者:Mark liuyunsheng
//////////////////////////////////////////////////////////////////////
#pragma once
#include <vector>
#include <memory>
#include <log4cplus/logger.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/ndc.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/loggingmacros.h> using namespace log4cplus; using namespace std; class BCLLogHelper
{
public:
static void Init();
static void Info(char* msg);
static void Error(char* msg);
};
下面为类库
// BCLSerialPort.cpp: implementation of the BCLSerialPort class.
// 作者:Mark liuyunsheng
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "BCLLogHelper.h" #ifndef _DEBUG
#pragma comment(lib,"./log/log4cplus/lib/log4cplus.lib")
#else
#pragma comment(lib,"./log/log4cplus/lib/log4cplusSD.lib")
#endif void BCLLogHelper::Init()
{
helpers::LogLog::getLogLog()->setInternalDebugging(true);
SharedAppenderPtr append(new RollingFileAppender(LOG4CPLUS_TEXT("syslog.log"), * * , )); append->setName(LOG4CPLUS_TEXT("First")); std::auto_ptr<Layout> _layout(new PatternLayout(_T("%D{%Y-%m-%d %H:%M:%S,%q} [%t] %-5p - %m%n")));
append->setLayout(_layout);
Logger::getRoot().addAppender(append);
} void BCLLogHelper::Info(char* msg)
{
LOG4CPLUS_INFO(Logger::getInstance(LOG4CPLUS_TEXT("System")), msg);
} void BCLLogHelper::Error(char* msg)
{
LOG4CPLUS_ERROR(Logger::getInstance(LOG4CPLUS_TEXT("System")), msg);
}
忽然发现C++又捡起来了。 了解的深度不够。 只是能写项目。
学好一门语言你会发现所有的开发语言都是一样的。
目前发现C#、C++、Vb、Java、ActionScript 貌似都能写项目,仅仅是写项目级别。深度的原来了解的还不够。
本文仅作为开发思路。不提倡。还是要专精一门开发语言的好!
当年只会C# 所以写C++就成这样了! log4cplus -> log4net的更多相关文章
- 当年只会C# 所以写C++就成这样了!
这应该是4-5年前了. 当年之会c#敲敲代码也不会C++但深信开发这东西只要思想有了. 只是语法问题. 对于C++这貌似只有大牛才能胜任的,而对于我来说是如此困难. 所以想想办法搞了很多通用类来避免C ...
- 分布式计算 要不要把写日志独立成一个Server Remote Procedure Call Protocol
w https://en.wikipedia.org/wiki/Remote_procedure_call In distributed computing a remote procedure ca ...
- 当年写的如何成为一名MSSQL DBA
很多开发人员都想成为一名数据库培训,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我 做DBA工作和面试DBA时,整理的一些DBA方面的三十个问 ...
- 【pyhon】理想论坛爬虫1.05版,将读取和写DB分离成两个文件
下午再接再厉仿照Nodejs版的理想帖子爬虫把Python版的也改造了下,但美中不足的是完成任务的线程数量似乎停滞在100个左右,让人郁闷.原因还待查. 先把代码贴出来吧,也算个阶段性成果. 爬虫代码 ...
- Android如果有一个任意写入的漏洞,如何将写权限转成执行权限
这个题目我以为是考的怎么进行提权,结果原来是这样的: . DexClassLoader 动态载入应用可写入的 dex 可执行文件 . java.lang.Runtime.exec 方法执行应用可写入的 ...
- 将MNIST手写数据集转换成图片保存到本地
# 加载图片 data = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = data.load_data() plt.im ...
- 一步一步用Canvas写一个贪吃蛇
之前在慕课网看了几集Canvas的视频,一直想着写点东西练练手.感觉贪吃蛇算是比较简单的了,当年大学的时候还写过C语言字符版的,没想到还是遇到了很多问题. 最终效果如下(图太大的话 时间太长 录制gi ...
- 写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP
去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过 ...
- 曾经我是一个只会excel的数据分析师,直到我遇到了……
我是一个数据分析师. 准确来说我是一个当年只会excel数据透视表,就天不怕地不怕地来当数据分析师的人.当年的某一天,我的老板Q我: 小刘啊,我小姨子给了我一个全国市委书记的名单,你帮我看看,有什么规 ...
随机推荐
- JVM内存分配策略
在 JVM内存垃圾回收方法 中,我们已经详细讨论了内存回收,但是,我们程序中生成的对象是如何进行分配的呢?以下所述针对的是HotSpot虚拟机. 1.Java堆结构 以HotSpot为例,如下图: H ...
- unity之自制玻璃啤酒瓶shader
客户的要求如下 步骤: 1.进行玻璃瓶效果分析 效果如下:高光,类次表面散射(里层通透而外层较为暗淡),外层白色勾勒轮廓. 高光:unity内部提供光滑度参数,越光滑则高光效果越明显,啤酒瓶材质是属于 ...
- IOS开发遇到(null)与<null>轻松处理
在ios开发中不可避免的我们会遇到服务器返回的值有空值,但是如果是nil也就算了还可能得到(null)以及<null>的返回值,该如何处理呢?(当然有的字典转模型中已处理,可以通过遍历等) ...
- Fedora20-64bit cross-compiling arm-linux-gcc
0按照友善之臂的手册建立交叉编译环境时,添加用户变量,最好是去更改 profile 文件 因为 profile 是所有用户都可以使用的,类似于 windows 中的系统变量 而 .bashrc 只有该 ...
- 子div设置float后导致父div无法自动撑开的问题
子div设置float后会导致父div无法自动撑开 原因:内部的DIV因为float:left之后,就丢失了clear:both和display:block的样式,所以外部的DIV不会被撑开. 以下是 ...
- logback日志写入数据库(mysql)配置
如题 建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1 logback 配置文件(如下) <?xml version="1.0" encoding ...
- 移动端城市选择JavaScript插件(基于WG的城市选择插件的修改版本)
周末的时候趁着一次机会,拿WG(博客)开发的城市选择插件改了一个移动端可以直接用的城市选择插件. 原版插件是基于原声JavaScript写的,在此先感谢作者. 我做的只是依照肯德基注册会员的页面的交互 ...
- Java上等价类划分测试的实现
利用JavaFx实现对有效等价类和无效等价类的划分: 代码: import javafx.application.Application;import javafx.event.ActionEvent ...
- int与CString互相转化
int num; CString str; //int转CString num=; str.Format(_T("%d"),num); //CString转int str=L&qu ...
- linux常用命令-压缩解压命令
gzip [文件] 压缩后文件格式 .gz,这个命令只能压缩文件,不能压缩目录.并且这个命令压缩后不保留源文件 gunzip [文件] 或者 gzip -d [文件] 解压缩.gz的压缩文件 tar ...