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);
解决 无用评论 打赏 举报
悬赏问题
- ¥15 oracle集群安装出bug
- ¥15 关于#python#的问题:自动化测试
- ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
- ¥15 教务系统账号被盗号如何追溯设备
- ¥20 delta降尺度方法,未来数据怎么降尺度
- ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
- ¥15 再不同版本的系统上,TCP传输速度不一致
- ¥15 高德地图点聚合中Marker的位置无法实时更新
- ¥15 DIFY API Endpoint 问题。
- ¥20 sub地址DHCP问题