【任务8】将日志写入log(glog)

glog简介

glog是google开源的一个日志系统,相比较log4系列的日志系统,它更加轻巧灵活,而且功能也比较完善

glog配置使用资料

下载glog

  • 命令:git clone https://github.com/google/glog.git

  • 如果没有git命令:yum -y install git

编译glog

  • 进入glog目录,打开README文件,按照其中的提示步骤进行编译:./autogen.sh && ./configure && make && make install

  • 完成后,会在/usr/local/lib路径下看到libglog*一系列库

Makefile文件和RecSys_server.skeleton.cpp文件

  • 修改之前在gen-cpp目录中的Makefile文件,在LIBS变量的末尾加上-lglog:LIBS = -L/usr/local/lib/*.so -lthrift -lfcgi -lglog

  • 修改gen-cpp目录中RecSys_server.skeleton.cpp文件:

      #include "RecSys.h"
    #include <thrift/protocol/TBinaryProtocol.h>
    #include <thrift/server/TSimpleServer.h>
    #include <thrift/transport/TServerSocket.h>
    #include <thrift/transport/TBufferTransports.h> //添加头文件
    #include <glog/logging.h> using namespace ::apache::thrift;
    using namespace ::apache::thrift::protocol;
    using namespace ::apache::thrift::transport;
    using namespace ::apache::thrift::server; using boost::shared_ptr; class RecSysHandler : virtual public RecSysIf {
    public:
    RecSysHandler() {
    // Your initialization goes here
    } void rec_data(std::string& _return, const std::string& data) {
    // Your implementation goes here
    printf("=======================\n");
    std::cout << "receive client data:" << data << std::endl; std::string ack = "yeah,I love you too!!"; //log输出,使用时按情况选择
    LOG(INFO) << data;
    LOG(ERROR) << data;
    LOG(WARNING) << data; _return = ack;
    } }; int main(int argc, char **argv) { google::InitGoogleLogging(argv[0]); int port = 9090;
    shared_ptr<RecSysHandler> handler(new RecSysHandler());
    shared_ptr<TProcessor> processor(new RecSysProcessor(handler));
    shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
    shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
    shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory()); TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
    server.serve();
    return 0;
    }

重新编译client端和server端

  • kill掉之前的client和server,在make相应的client和server

  • 再次启动server端和client,命令:./server,/usr/local/src/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8088 -f /test/thrift_test/python_thrift_demo/gen-cpp/client

  • 同上操作,用浏览器的方式访问,server端会打印出log,并产生log日志文件,默认路径:/tmp/下的server.ERROR,server.INFO,server.WARNING

  • 更改glog产生log日志文件的路径,在gen-cpp目录下的RecSys_server.skeleton.cpp文件中的int main()方法中添加代码,添加glog输出地址:

int main(int argc, char **argv) {

//glog地址
FLAGS_log_dir = "/test/thrift_test/python_thrift_demo/gen-cpp/logs"
google::InitGoogleLogging(argv[0]); int port = 9090;
shared_ptr<RecSysHandler> handler(new RecSysHandler());
shared_ptr<TProcessor> processor(new RecSysProcessor(handler));
shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory()); TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
server.serve();
return 0;
}

其中logs目录需要自行创建

  • 然后执行make命令,重新生成client端和server

最新文章

  1. Oracle学习笔记十四 内置程序包
  2. 洛谷P1196 银河英雄传说[带权并查集]
  3. linux 命令行启动虚拟机
  4. zendstuido10 配置spket插件
  5. Java Se:Java Security
  6. Response.End()在Webform和ASP.NET MVC下的表现差异
  7. 再说CSS3渐变——线性渐变
  8. JAVA学习第六十二课 — TCP协议练习
  9. 个人作业2 — 英语学习APP的案例分析
  10. ASP.NET MVC5 中百度ueditor富文本编辑器的使用
  11. Scrapy爬取猫眼《复仇者联盟4终局之战》影评
  12. 在DOS中操作MySQL数据库出现中文乱码
  13. C#学习-析构函数
  14. makefile编译错误情况整理
  15. 《温故而知新》JAVA基础四
  16. 总有一些实用javascript的元素被人遗忘在角落-slice
  17. 查看Linux下系统资源占用常用命令
  18. Linux下解压tar.xz
  19. 有用的Python代码片段
  20. nginx访问日志中添加接口返回值

热门文章

  1. Mysql rpm安装
  2. delete in javascript
  3. 浅析Linux操作系统是如何工作的(思维导图)
  4. yum 安装 lnmp
  5. Tuxedo安装、配置、以及演示样例程序 (学习网址)
  6. sqlserver-一次updlock和withnolock和with check option 的报错原因分析
  7. August 17th 2017 Week 33rd Thursday
  8. Directed Graphs
  9. Scala编程实例:使用List和Tuple
  10. 记录智能指针使用shared_ptr使用错误