Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meibuyu-rpc
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
without authentication
meibuyu-rpc
Commits
4abe8c0f
Commit
4abe8c0f
authored
Mar 18, 2021
by
王源
🎧
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整异常日志收集,优化获取trace中真实文件和行数,只对项目app文件夹下的错误获取编码人
parent
12117b7e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
17 deletions
+36
-17
ExceptionLogProducer.php
src/Amqp/Producer/ExceptionLogProducer.php
+36
-17
No files found.
src/Amqp/Producer/ExceptionLogProducer.php
View file @
4abe8c0f
...
...
@@ -18,33 +18,52 @@ class ExceptionLogProducer extends ProducerMessage
public
function
__construct
(
$data
)
{
if
(
strpos
(
$data
[
'message'
],
'Cannot select any node from load balancer'
)
!==
false
)
{
return
;
}
try
{
$data
[
'operator'
]
=
Auth
::
user
()[
'name'
];
}
catch
(
HttpResponseException
$e
)
{
put_log
(
'获取操作人失败; '
.
$e
->
getMessage
(),
'ExceptionLogProducer.log'
);
}
// 排除依赖包文件和运行缓存文件
// 获取trace中真实文件和行数
if
(
!
empty
(
$data
[
'trace'
]))
{
preg_match
(
'/(\/var\/www\/html\/.+?\/app\/.+?\.php)(?=\()/'
,
$data
[
'trace'
],
$matchFiles
);
put_log
(
'$matchFiles: '
.
json_encode
(
$matchFiles
),
'ExceptionLogProducerPreg.log'
);
if
(
!
empty
(
$matchFiles
[
0
]))
{
$data
[
'file'
]
=
$matchFiles
[
0
];
$file
=
str_replace
(
'/'
,
'\/'
,
$matchFiles
[
0
]);
$file
=
str_replace
(
'.'
,
'\.'
,
$file
);
$pattern
=
'/(?<='
.
$file
.
'\()[0-9]+(?=\))/'
;
put_log
(
'$pattern: '
.
$pattern
,
'ExceptionLogProducerPreg.log'
);
preg_match
(
$pattern
,
$data
[
'trace'
],
$matchLines
);
put_log
(
'$matchLines: '
.
json_encode
(
$matchLines
),
'ExceptionLogProducerPreg.log'
);
if
(
!
empty
(
$matchLines
[
0
]))
{
$data
[
'line'
]
=
$matchLines
[
0
];
}
}
}
put_log
(
"file:
{
$data
[
'file'
]
}
"
,
'ExceptionLogProducerEcho.log'
);
if
(
strpos
(
$data
[
'file'
],
'/vendor/'
)
===
false
&&
strpos
(
$data
[
'file'
],
'/runtime/'
)
===
false
)
{
try
{
put_log
(
"git blame -L
{
$data
[
'line'
]
}
,
{
$data
[
'line'
]
}
{
$data
[
'file'
]
}
"
,
'ExceptionLogProducerEcho.log'
);
$output
=
[];
exec
(
"git blame -L
{
$data
[
'line'
]
}
,
{
$data
[
'line'
]
}
{
$data
[
'file'
]
}
"
,
$output
);
put_log
(
"output: "
.
json_encode
(
$output
),
'ExceptionLogProducerEcho.log'
);
if
(
!
empty
(
$output
[
0
])
&&
is_string
(
$output
[
0
]))
{
preg_match
(
'/(?<=\()[^ ]+/'
,
$output
[
0
],
$matches
);
put_log
(
"matches:
{
$matches
[
0
]
}
"
,
'ExceptionLogProducerEcho.log'
);
if
(
!
empty
(
$matches
[
0
]))
{
$data
[
'coder'
]
=
$matches
[
0
];
if
(
!
empty
(
$data
[
'file'
]))
{
// 只对项目app文件夹下的错误获取编码人
preg_match
(
'/(\/var\/www\/html\/.+?\/app\/)/'
,
$data
[
'file'
],
$matchPaths
);
put_log
(
'$matchPaths: '
.
json_encode
(
$matchPaths
),
'ExceptionLogProducerPreg.log'
);
if
(
!
empty
(
$matchPaths
[
0
]))
{
try
{
put_log
(
"cd
{
$matchPaths
[
0
]
}
&& git blame -L
{
$data
[
'line'
]
}
,
{
$data
[
'line'
]
}
{
$data
[
'file'
]
}
"
,
'ExceptionLogProducerEcho.log'
);
exec
(
"cd
{
$matchPaths
[
0
]
}
&& git blame -L
{
$data
[
'line'
]
}
,
{
$data
[
'line'
]
}
{
$data
[
'file'
]
}
"
,
$output
);
put_log
(
"output: "
.
json_encode
(
$output
),
'ExceptionLogProducerEcho.log'
);
if
(
!
empty
(
$output
[
0
])
&&
is_string
(
$output
[
0
]))
{
preg_match
(
'/(?<=\()[^ ]+/'
,
$output
[
0
],
$matchCoders
);
put_log
(
'$matchCoders: '
.
json_encode
(
$matchCoders
),
'ExceptionLogProducerPreg.log'
);
if
(
!
empty
(
$matchCoders
[
0
]))
{
$data
[
'coder'
]
=
$matchCoders
[
0
];
}
}
}
catch
(
Exception
$e
)
{
put_log
(
'获取编码人失败; '
.
$e
->
getMessage
(),
'ExceptionLogProducer.log'
);
}
}
catch
(
Exception
$e
)
{
put_log
(
'获取编码人失败; '
.
$e
->
getMessage
(),
'ExceptionLogProducer.log'
);
}
}
put_log
(
'----------'
,
'ExceptionLogProducerPreg.log'
);
put_log
(
'----------'
,
'ExceptionLogProducerEcho.log'
);
$this
->
payload
=
$data
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment