jiangweifeng1997 2015-06-06 02:07 采纳率: 100%
浏览 1518
已结题

求教简单C++ OOP题目 关于Log库的简易编写

Log是用来对复杂程序进行调试的常用手段,用来实现log的库也是我们非常常用的程序
库之一。请你设计一个简化的log程序库,做到如下几点:
a) 能够支持三种不同的log目的地(控制台、文件、数据库)及这三种目的地的自由
组合,目的地可以动态变化,未来可能需要加入更多种类的目的地(比如限制长度
的文件);
b) 能够支持三种不同的log格式(简单不带任何附加信息,附带短格式表示的当前时
间,附带长格式表示的当前时间),格式可以动态变化(即可以在log 对象产生之
后动态修改其使用的log格式),以后可能需要加入更多种类的格式;
c) 支持对string类型进行log操作。
请针对这几点需求对这个程序库进行设计,不要求实际实现功能,只要在相应功能处
用输出语句输出标记即可。

  • 写回答

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问题