Blame view

src/services/logd.lua 1.95 KB
314bc5df   zhengshouren   提交服务器初始代码
1
  local skynet = require "skynet"
314bc5df   zhengshouren   提交服务器初始代码
2
3
  local queue = require "skynet.queue"
  local bson = require "bson"
df883a11   zhouhaihai   日志处理
4
  local socketdriver = require "skynet.socketdriver"
314bc5df   zhengshouren   提交服务器初始代码
5
6
7
8
9
10
11
12
13
14
15
  
  local serverId = tonumber(skynet.getenv("servId"))
  
  require "shared.init"
  require "skynet.manager"
  
  local table_insert = table.insert
  local pairs = pairs
  local ipairs = ipairs
  local string_format = string.format
  
df883a11   zhouhaihai   日志处理
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  local CMD, cs = {}
  local log_fd, connecting = nil , false
  
  
  local socket_message = {}
  -- read skynet_socket.h for these macro
  -- SKYNET_SOCKET_TYPE_DATA = 1
  socket_message[1] = function(id, size, data)
  	skynet.error(string.format("LOG SOCKET: data: ", skynet.tostring(data, size)))
  	socketdriver.drop(data, size)
  end
  
  -- SKYNET_SOCKET_TYPE_CONNECT = 2
  socket_message[2] = function(id, _ , addr)
  	skynet.error("LOG SOCKET: connect: ", addr)
  	connecting = false
  end
  
  -- SKYNET_SOCKET_TYPE_CLOSE = 3
  socket_message[3] = function(id)
  	skynet.error("LOG SOCKET: closed")
  	connecting = false
  end
  
  -- SKYNET_SOCKET_TYPE_ERROR = 5
  socket_message[5] = function(id, _, err)
  	skynet.error("LOG SOCKET: error: ", err)
  	connecting = false
  end
314bc5df   zhengshouren   提交服务器初始代码
45
  
df883a11   zhouhaihai   日志处理
46
47
48
49
50
51
52
53
  
  skynet.register_protocol {
  	name = "socket",
  	id = skynet.PTYPE_SOCKET,	-- PTYPE_SOCKET = 6
  	unpack = socketdriver.unpack,
  	dispatch = function (_, _, t, ...)
  		if socket_message[t] then
  			socket_message[t](...)
314bc5df   zhengshouren   提交服务器初始代码
54
55
  		end
  	end
df883a11   zhouhaihai   日志处理
56
57
  }
  
39bcd7ca   zhouhaihai   LOG
58
  function CMD.log(doc)
df883a11   zhouhaihai   日志处理
59
60
61
  	if not socketdriver.send(log_fd, json.encode(doc) .. "\n") then
  		if not connecting then
  			CMD.open() -- 连一下试试
39bcd7ca   zhouhaihai   LOG
62
  			socketdriver.send(log_fd, json.encode(doc) .. "\n")
314bc5df   zhengshouren   提交服务器初始代码
63
64
  		end
  	end
314bc5df   zhengshouren   提交服务器初始代码
65
66
  end
  
df883a11   zhouhaihai   日志处理
67
68
69
  function CMD.open()
  	log_fd = socketdriver.connect("127.0.0.1", 5170)
  	connecting = true
314bc5df   zhengshouren   提交服务器初始代码
70
71
  end
  
314bc5df   zhengshouren   提交服务器初始代码
72
  local function __init__()
df883a11   zhouhaihai   日志处理
73
  	skynet.dispatch("lua", function (session, address, command, ...)
314bc5df   zhengshouren   提交服务器初始代码
74
75
76
77
  		local f = CMD[command]
  		if command == "open" then
  			skynet.ret(skynet.pack(f(...)))
  		else
df883a11   zhouhaihai   日志处理
78
79
  			local logType, doc, index_suffix = ...
  			cs(function() f(logType, doc, index_suffix) end)
314bc5df   zhengshouren   提交服务器初始代码
80
81
82
83
  		end
  	end)
  	cs = queue()
  
a5486ede   zhouhaihai   csvdata 修改为 share...
84
  	skynet.register(".log")
314bc5df   zhengshouren   提交服务器初始代码
85
86
87
  end
  
  skynet.start(__init__)