MySQL中提取出来的日志

[[email protected] tmp]# cat logger.h 
#ifndef LOGGER_UTIL_INCLUDED
#define LOGGER_UTIL_INCLUDED
/*
   Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
*/

/**
  A trivial placeholder for inserting Time signatures into streams.
 @example cout << Datetime() << "[Info] Today was a sunny day" << endl;
*/

#include <ostream>
#include <string>
#include <sstream>

using namespace std;

struct Datetime {};

ostream &operator<<(ostream &os, const Datetime &dt);

class Gen_spaces
{
public:
  Gen_spaces(int s)
  {
    m_spaces.assign(s,‘ ‘);
  }
  ostream &operator<<(ostream &os)
  {
    return os;
  }
  friend ostream &operator<<(ostream &os, const Gen_spaces &gen);
private:
  string m_spaces;
};

ostream &operator<<(ostream &os, const Gen_spaces &gen);

class Log : public ostream
{
public:
  Log(ostream &str, string logclass) :
   ostream(NULL), m_buffer(str, logclass)
  {
    this->init(&m_buffer);
  }
  void enabled(bool s) { m_buffer.enabled(s); }
private:

  class Log_buff : public stringbuf
  {
  public:
    Log_buff(ostream &str, string &logc)
      :m_os(str),m_logc(logc), m_enabled(true)
    {}
    void set_log_class(string &s) { m_logc= s; }
    void enabled(bool s) { m_enabled= s; }
    virtual int sync();
  private:
    ostream &m_os;
    string m_logc;
    bool m_enabled;
  };

  Log_buff m_buffer;
};

#endif /* LOGGER_UTIL_INCLUDED */

[[email protected] tmp]# cat logger.cc 
/*
   Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
 */

#include "logger.h"
#include <iostream>
#include <locale>

ostream &operator<<(ostream &os, const Datetime &dt)
{
	const char format[]= "%Y-%m-%d %X";
	time_t t(time(NULL));
	tm tm(*localtime(&t));
	std::locale loc(cout.getloc());
	ostringstream sout;
	const std::time_put<char> &tput =
		std::use_facet<std::time_put<char> >(loc);
	tput.put(sout.rdbuf(), sout, ‘\0‘, &tm, &format[0], &format[11]);
	os << sout.str() << " ";
	return os;
}

ostream &operator<<(ostream &os, const Gen_spaces &gen)
{
	return os << gen.m_spaces;
}

int Log::Log_buff::sync()
{
	string sout(str());
	if (m_enabled && sout.length() > 0)
	{
		m_os << Datetime() << "[" << m_logc << "]"<< Gen_spaces(8-m_logc.length()) << sout;
	}
	str("");
	m_os.flush();
	return 0;
}

[[email protected] tmp]# cat main.cpp 
#include <iostream>
#include "logger.h"

using namespace std;

int main(void)
{
	cout << Datetime() << "[测试] 今天的天气不错!" << endl; 
	return 0;
}
[[email protected] tmp]# g++ main.cpp  logger.cc && ./a.out 
2016-11-03 17:44:09 [测试] 今天的天气不错!
[[email protected] tmp]#
时间: 2024-10-06 02:18:00

MySQL中提取出来的日志的相关文章

mysql中的慢查询日志

首先我们看一下关于mysql中的日志,主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是说用来记录mysql数据库的客 户端连接状况.SQL语句的执行情况和错误信息等.当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复. 先看一下日志参数 mysql> show variables like '%log%'; +-----------------

Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍

前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的作用是什么?如何去控制这些日志呢?如何去使用这些日志提供的信息呢? 错误日志 1.错误日志作用 错误日志记录了mysql启动和停止时.以及server执行过程中发生不论什么严重性错误的相关信息.当数据库出现不论什么故障导致无法启动时候.比方mysql启动异常.我们可首先检查此日志.在mysql中,错

『浅入深出』MySQL 中事务的实现

在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 MySQL 中对 ACID 的实现进行简单的介绍. 事务其实就是并发控制的基本单位:相信我们都知道,事务是一个序列操作,其中的操作要么都执行,要么都不执行,它是一个不可分割的工作单位:数据库事务的 ACID 四大特性是事务的基础,了解了 AC

mysql中slow query log慢日志查询分析

在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了. 一.慢查询日志 配置 开启慢查询日志 , 配置样例: /etc/mysql/my.cnf[mysqld]log-slow-queries 在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效.慢查询 日志将写入参数 DATADIR (数据目录:/var/lib/mysql

mysql 中批量创建日志表信息脚本

mysql中通过存储过程批量创建日志信息表脚本如下: drop PROCEDURE if EXISTS reqSp; DELIMITER // create procedure reqSp(sTime varchar(32), eTime varchar(32),tchema varchar(32)) begin declare sName varchar(128); declare uid varchar(128); declare orderId varchar(128); declare

MySQL中redo日志

重做日志用来实现事务的持久性,即ACID中的D,由两部分组成: 一是内存中的重做日志缓冲(redo log buffer)  易丢失 二是重做日志文件(redo log file) 持久的 InnoDB是事务的存储引擎,其通过Force Log at Commit 机制实现事务的持久性,即当事务提交commit时,必须先将事务的所有日志写入到重做日志文件进行持久化,待事务COMMIT操作完成才算完成,这里的日志指重做日志,在InnoDB存储引擎中,由两部分组成,即redo log 和undo L

如何在MySql中记录SQL日志

SQL server有一个sql profiler可以实时跟踪服务器执行的SQL语句,这在很多时候调试错误非常有用.例如:别人写的复杂代码.生产系统.无调试环境.无原代码... ... 查了一下资料,My SQL可以用下面方法跟踪sql 语句,以下方法以Windows平台为例,linux雷同: 1  配置my.ini文件(在安装目录,linux下文件名为my.cnf 查找到[mysqld]区段,增加日志的配置,如下示例: [mysqld]log="C:/temp/mysql.log"l

MySQL中查询日志与慢查询日志的基本学习教程(转)

一.查询日志 查询日志记录MySQL中所有的query,通过"--log[=file_name]"来打开该功能.由于记录了所有的query,包括所有的select,体积比较大,开启后对性能也有比较大的影响,所以请大家慎用该功能.一般只用于跟踪某些特殊的sql性能问题才会短暂打开该功能.默认的查询日志文件名为:hostname.log.  ----默认情况下查看是否启用查询日志: 1 [[email protected] mysql5.5]# service mysql start 1

mysql中的日志

关键词:mysql日志,mysql四种日志 一.mysql日志的种类 (1)一般来说,日志有四种,分别为: 1.错误日志:log-err (记录启动,运行,停止mysql时出现的信息) 2.二进制日志:log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用) [1]暂时停止:mysql > set sql_log_bin={0,1} 0为停止 1为启用 [2]查看二进制日志文件:mysqlbinlog path/file_name 3.通用日志:general-log (记录建立的客