当前位置: 首页 > news >正文

阿里云网站建设教程视频有没有类似一起做网店的网站

阿里云网站建设教程视频,有没有类似一起做网店的网站,网站建设目的和功能定位,湖北金扬建设网站log4cpp 是参考 log4j 所写的 c 版本的写 log 的库。可以在这里下载http://log4cpp.sourceforge.net/我的使用方法是#xff1a;1#xff0c;定义了一个 _LOG4CPP 宏#xff0c;用来打开或关闭 log4cpp 的调用#xff0c;以便在完全不需要 log 的情况下可以运行#xff0c…log4cpp 是参考 log4j 所写的 c 版本的写 log 的库。可以在这里下载 http://log4cpp.sourceforge.net/ 我的使用方法是 1定义了一个 _LOG4CPP 宏用来打开或关闭 log4cpp 的调用以便在完全不需要 log 的情况下可以运行例如进行性能测试时又比如 log4cpp 可能有内存泄露关闭使用它可以检查程序其它地方是否有泄露 2在写 log 时自动加上函数名以方便跟踪运行信息在 gcc 可以用可变参数宏定义vc 中用其它办法稍后说明 3每一个需要写 log 的类都加上一个静态 log 实例以方便通过配置使得相应的 log 可以输出到指定的地方有利于跟踪特定的运行信息 4不直接调用 log4cpp 而是通过宏定义来使用原因同1即有利于关闭 log 功能 基于以上几点我写了几个函数及宏定义等以下逐一说明 // InitializeLog4cpp 从指定的 log 配置文件中读取信息并初始化 log4cpp这个函数在进程的入口处调用 void InitializeLog4cpp(const std::string logfile); // ReleaseLog4cpp 用于释入 log4cpp 在进程的结束处调用 void ReleaseLog4cpp(); // 以下宏用于在类中声明一个静态变量变量名为 log DECLARE_STATIC_LOG() // 以下宏用于初如化类中的 log 静态变量 DEFINE_STATIC_LOG(ClassName) // 以下是用来写 log 信息的几个宏严重级别分别为 DEBUG, INFO, NOTICE, ERROR LogDebug LogInfo LogNotice LogError 以下先演示一个应用实例 Demo.h 文件主要内容   #include LogUtils.h namespace dk{ class Demo{public:    Demo();    virtual ~Demo();    public:    void TestIt(int i, int j);private:    DECLARE_STATIC_LOG();}; }     Demo.cpp 文件主要内容   #include Demo.h namespace dk{ DEFINE_STATIC_LOG(Demo);Demo::Demo(){    LogInfo();}Demo::~Demo(){    LogInfo();}void Demo::TestIt(int i, int j){    LogInfo(i%d, j%d, i, j);} }   再写个例子来运行可以看到类似输出 [INFO] - Demo::Demo() - [INFO] - Demo::TestIt() - i1, j2[INFO] - Demo::~Demo() - 最后附上完整的 LogUtils.h LogUtils.cpp LogTracer.h (这个文件是因为 vc 不支持可变参数的宏所以采用的取巧方法这方法是从网上搜来的出处忘了请见谅。 LogUtils.h       #ifndef _LOG_UTILS_H_#define _LOG_UTILS_H_#include string#include LogTracer.h#if defined(_LOG4CPP)#include log4cpp/Category.hhnamespace log4cpp{    class Category;};#endifnamespace dk{void InitializeLog4cpp(const std::string  logfile);void ReleaseLog4cpp();#if defined (_LOG4CPP)log4cpp::Category  GetLogCategory(const char * categoryName);#endif#if defined (_LOG4CPP)#    define DECLARE_STATIC_LOG() static log4cpp::Category  log#    define DEFINE_STATIC_LOG(ClassName) log4cpp::Category  ClassName::log GetLogCategory(#ClassName)#else#    define DECLARE_STATIC_LOG()#    define DEFINE_STATIC_LOG(ClassName)#endifvoid suck(const char * fmt, ...);#if defined(_LOG4CPP)  defined(WIN32)#     define MakePrefix    std::string(__FUNCTION__).append(() - )#    define LogDebug     (LogDebuger(log, MakePrefix))#    define LogInfo        (LogInfoer(log, MakePrefix))#    define LogNotice     (LogNoticer(log, MakePrefix))#    define LogError        (LogErrorer(log, MakePrefix))#elif defined(_LOG4CPP)  !defined(WIN32)#    defineMakePrefix(fmt)        std::string(__FILE__).append(::).append(__FUNCTION__).append(() - ).append(fmt).c_str()#    define LogDebug(fmt, ...)    log.debug(MakePrefix(fmt), ##__VA_ARGS__)#    define LogInfo(fmt, ...)    log.info(MakePrefix(fmt), ##__VA_ARGS__)#    define LogNotice(fmt, ...)    log.notice(MakePrefix(fmt), ##__VA_ARGS__)#    define LogError(fmt, ...)    log.error(MakePrefix(fmt), ##__VA_ARGS__)#else#    define LogDebug         suck#    define LogInfo            suck#    define LogNotice         suck#    define LogError            suck#endif}#endif   LogUtils.cpp   #include LogUtils.h#if defined(_LOG4CPP)#include log4cpp/PropertyConfigurator.hh// appenders#include log4cpp/Appender.hh#include log4cpp/OstreamAppender.hh#include log4cpp/FileAppender.hh#include log4cpp/RollingFileAppender.hh#include log4cpp/AbortAppender.hh#ifdef WIN32#include log4cpp/Win32DebugAppender.hh#include log4cpp/NTEventLogAppender.hh#endif#include log4cpp/RemoteSyslogAppender.hh#ifdef LOG4CPP_HAVE_LIBIDSA#include log4cpp/IdsaAppender.hh#endif    // LOG4CPP_HAVE_LIBIDSA#ifdef LOG4CPP_HAVE_SYSLOG#include log4cpp/SyslogAppender.hh#endif// layouts#include log4cpp/Layout.hh#include log4cpp/BasicLayout.hh#include log4cpp/SimpleLayout.hh#include log4cpp/PatternLayout.hh#include log4cpp/Priority.hh#endifnamespace dk{    void InitializeLog4cpp(const std::string  logfile){#if defined(_LOG4CPP)    try    {         log4cpp::PropertyConfigurator::configure(logfile);    }    catch (log4cpp::ConfigureFailure  f)    {        std::cerr  Configure Problem   f.what()  std::endl;            //#if defined(WIN32)//        log4cpp::Appender * appender new log4cpp::Win32DebugAppender(console);    //#else        log4cpp::Appender * appender  new log4cpp::OstreamAppender(console, std::cout);//#endif                    log4cpp::PatternLayout * patternLayout  new log4cpp::PatternLayout();        patternLayout-setConversionPattern(%d [%t] %p - %m%n);        appender-setLayout(patternLayout);                    log4cpp::Category  root  log4cpp::Category::getRoot();        root.addAppender(appender);        root.setPriority(log4cpp::Priority::DEBUG);    }#endif}void ReleaseLog4cpp(){#if defined(_LOG4CPP)    log4cpp::Category::shutdown();#endif}#if defined(_LOG4CPP)log4cpp::Category  GetLogCategory(const char * categoryName){    std::string name  dk.;    name.append(categoryName);    return log4cpp::Category::getInstance(name);}#endifvoid suck(const char * fmt, ...){    if (fmt) {}}}   LogTracer.h     #ifndef _LOG_TRACER_H_#define _LOG_TRACER_H_#if defined(_LOG4CPP)  defined(WIN32)#include log4cpp/Category.hhnamespace log4cpp{    class Category;};namespace dk{#include stdarg.h#include stdio.hclass LogTracer{public:    LogTracer(log4cpp::Category  log, const std::string  prefix)        : mLog(log)        , mMsg(prefix)    {}      void operator()(const char * fmt, ...)    {        va_list ap;        va_start(ap, fmt);        AppendString(mMsg, fmt, ap);        WriteLog(mMsg);        va_end(ap);    }    private:    virtual void WriteLog(const std::string  message)  0;    void AppendString(std::string  message, const char * format, va_list args)    {        size_t size  1024;        char * buffer  new char[size];             while (1)        {            int n  _vsnprintf(buffer, size, format, args);                 // If that worked, return a string.            if ((n  -1)  (static_castsize_t(n)  size))            {                message.append(buffer);                delete [] buffer;                return;            }                 // Else try again with more space.            size  (n  -1) ?                n  1 : // ISO/IEC 9899:1999                size * 2; // twice the old size                 delete [] buffer;            buffer  new char[size];        }    }private:    // copy-ctor and operator    LogTracer(const LogTracer );    LogTracer  operator(const LogTracer );protected:    log4cpp::Category  mLog;    std::string mMsg;};class LogDebuger    : public LogTracer{public:    LogDebuger(log4cpp::Category  log, const std::string  prefix)        : LogTracer(log, prefix)    {    }    private:    virtual void WriteLog(const std::string  message)    {        mLog.debug(message);    }};class LogInfoer    : public LogTracer{public:    LogInfoer(log4cpp::Category  log, const std::string  prefix)        : LogTracer(log, prefix)    {    }    private:    virtual void WriteLog(const std::string  message)    {        mLog.info(message);    }};class LogNoticer    : public LogTracer{public:    LogNoticer(log4cpp::Category  log, const std::string  prefix)        : LogTracer(log, prefix)    {    }    private:    virtual void WriteLog(const std::string  message)    {        mLog.notice(message);    }};class LogErrorer    : public LogTracer{public:    LogErrorer(log4cpp::Category  log, const std::string  prefix)        : LogTracer(log, prefix)    {    }    private:    virtual void WriteLog(const std::string  message)    {        mLog.error(message);    }};}#endif#endif
http://wiki.neutronadmin.com/news/304790/

相关文章:

  • 杭州建设实名制报备网站盐城z做网站
  • 江苏 网站集约化建设方案网页游戏网站源码
  • 网站优化外包多少钱厦门双模网站
  • 萍乡招聘网站建设西安网站搭建公司
  • 岳阳做网站公司wordpress没权重
  • pc网站 手机网站 微信网站 上海水果营销软文
  • 网站制作公司 深圳网络营销推广8种方法
  • 广州白云学校网站建设做全屏网站设计时容易犯的错
  • 网站宽度960全球设计网优秀版式作品
  • 东莞著名网站建设企业做外贸怎么看外国网站
  • 郑州网站建设九零后商河做网站公司
  • 网站程序源码上传到空间打开网站首页还是显示的程序原源代码网站后台首页模板
  • 重庆品牌网站建设公司排名设计制作建筑模型综合实践教案
  • 网站友情链接怎么样做星子网房产租房
  • 在进行网站设计时app和网站开发哪个难
  • 建设网站需要花费多少钱蛋糕店网站建设方案
  • 制作网站的成本规划如何优化
  • 巩义郑州网站建设学网站开发好吗
  • 自适应网站制作公司dedecmsv5.6 qq空间网站模板
  • 老实人做网站盗版小说网站怎么做
  • 网站设计服务流程免费一级做网站
  • 网站在谷歌怎么做排名wordpress 收费主题破解版
  • 上海做网站站优云一一十七济源市建设管理处网站
  • 网上写作最好的网站网站设计外包协议
  • 成都网站建设公司是什么意思wordpress手机网站插件
  • 猪八戒网做网站哈尔滨创意网站建设
  • 网站群管理平台装修设计平台
  • 网页 网站 站点的区别如何写软文
  • 集团网站群建设西安网站建设网络
  • 电子商务网站建设与维护论文十大保洁公司