]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_log.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include <boost/container/flat_map.hpp>
7 #include "rgw_common.h"
8 #include "include/utime.h"
9 #include "common/Formatter.h"
10 #include "common/OutputDataSocket.h"
14 struct rgw_log_entry
{
16 using headers_map
= boost::container::flat_map
<std::string
, std::string
>;
18 rgw_user object_owner
;
19 rgw_user bucket_owner
;
30 uint64_t bytes_received
;
36 headers_map x_headers
;
38 void encode(bufferlist
&bl
) const {
39 ENCODE_START(9, 5, bl
);
40 ::encode(object_owner
.id
, bl
);
41 ::encode(bucket_owner
.id
, bl
);
44 ::encode(remote_addr
, bl
);
46 ::encode(obj
.name
, bl
);
49 ::encode(http_status
, bl
);
50 ::encode(error_code
, bl
);
51 ::encode(bytes_sent
, bl
);
52 ::encode(obj_size
, bl
);
53 ::encode(total_time
, bl
);
54 ::encode(user_agent
, bl
);
55 ::encode(referrer
, bl
);
56 ::encode(bytes_received
, bl
);
57 ::encode(bucket_id
, bl
);
59 ::encode(object_owner
, bl
);
60 ::encode(bucket_owner
, bl
);
61 ::encode(x_headers
, bl
);
64 void decode(bufferlist::iterator
&p
) {
65 DECODE_START_LEGACY_COMPAT_LEN(8, 5, 5, p
);
66 ::decode(object_owner
.id
, p
);
68 ::decode(bucket_owner
.id
, p
);
71 ::decode(remote_addr
, p
);
73 ::decode(obj
.name
, p
);
76 ::decode(http_status
, p
);
77 ::decode(error_code
, p
);
78 ::decode(bytes_sent
, p
);
79 ::decode(obj_size
, p
);
80 ::decode(total_time
, p
);
81 ::decode(user_agent
, p
);
82 ::decode(referrer
, p
);
84 ::decode(bytes_received
, p
);
93 snprintf(buf
, sizeof(buf
), "%llu", (long long)id
);
96 ::decode(bucket_id
, p
);
105 ::decode(object_owner
, p
);
106 ::decode(bucket_owner
, p
);
109 ::decode(x_headers
, p
);
113 void dump(Formatter
*f
) const;
114 static void generate_test_instances(list
<rgw_log_entry
*>& o
);
116 WRITE_CLASS_ENCODER(rgw_log_entry
)
118 class OpsLogSocket
: public OutputDataSocket
{
119 Formatter
*formatter
;
122 void formatter_to_bl(bufferlist
& bl
);
125 void init_connection(bufferlist
& bl
) override
;
128 OpsLogSocket(CephContext
*cct
, uint64_t _backlog
);
129 ~OpsLogSocket() override
;
131 void log(struct rgw_log_entry
& entry
);
136 int rgw_log_op(RGWRados
*store
, RGWREST
* const rest
, struct req_state
*s
,
137 const string
& op_name
, OpsLogSocket
*olog
);
138 void rgw_log_usage_init(CephContext
*cct
, RGWRados
*store
);
139 void rgw_log_usage_finalize();
140 void rgw_format_ops_log_entry(struct rgw_log_entry
& entry
,
141 Formatter
*formatter
);
143 #endif /* CEPH_RGW_LOG_H */