Log是用来对复杂程序进行调试的常用手段,用来实现log的库也是我们非常常用的程序
库之一。请你设计一个简化的log程序库,做到如下几点:
a) 能够支持三种不同的log目的地(控制台、文件、数据库)及这三种目的地的自由
组合,目的地可以动态变化,未来可能需要加入更多种类的目的地(比如限制长度
的文件);
b) 能够支持三种不同的log格式(简单不带任何附加信息,附带短格式表示的当前时
间,附带长格式表示的当前时间),格式可以动态变化(即可以在log 对象产生之
后动态修改其使用的log格式),以后可能需要加入更多种类的格式;
c) 支持对string类型进行log操作。
请针对这几点需求对这个程序库进行设计,不要求实际实现功能,只要在相应功能处
用输出语句输出标记即可。
求教简单C++ OOP题目 关于Log库的简易编写
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- threenewbee 2015-06-06 03:49关注
abstract class IWriterSerivce { public: void Write(string context) = 0; } class FileWriter : public IWriterSerivce { public: void Write(string context) { / * 将context写入文件 */ } }; class DBWriter : public IWriterSerivce { public: void Write(string context) { / * 将context写入数据库 */ } }; class ConsoleWriter : public IWriterSerivce { public: void Write(string context) { / * 将context输出控制台 */ } }; class LogBase { protected: IWriterSerivce ** services; protected: int servicecount = 0; protected: virtual string formatLog(string s) { return s; } public: void Write(string s) { string fs = formatLog(s); for (int i = 0; i < servicecount; i++) { services[i]->Write(fs); } } }; class SimpleLog : public LogBase { protected virtual string formatLog(string s) { return 格式化(s); } }; class ShortDateTimeLog : public LogBase { protected virtual string formatLog(string s) { return 格式化(s); } }; class LongDateTimeLog : public LogBase { protected virtual string formatLog(string s) { return 格式化(s); } }; 使用: 比如说我要用输出控制台、文件,短日期: class MyLog : public ShortDateTimeLog { public MyLog() { services = new IWriteService[2]; service[0] = new FileWriter(); service[1] = new ConsoleWriter(); servicecount = 2; } }; MyLog log; log.Write(yourstring);
解决 无用评论 打赏 举报
悬赏问题
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮