This is an automated email from the ASF dual-hosted git repository.
jensg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git
commit 1506661e92df5568c9e537bd68cd1c59dc55f38a
Author: Konstantin Pozdniakov <kpozdniakov>
AuthorDate: Sat Nov 21 10:13:29 2020 +0100
Log errors in processor via standard logger #2284
Client: netstd
Patch: Konstantin Pozdniakov & Jens Geyer
This closes #2284
---
compiler/cpp/src/thrift/generate/t_netstd_generator.cc | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
index f1198e5..96963ee 100644
--- a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
@@ -361,6 +361,7 @@ string t_netstd_generator::netstd_type_usings() const
"using System.Linq;\n"
"using System.Threading;\n"
"using System.Threading.Tasks;\n"
+ "using Microsoft.Extensions.Logging;\n"
"using Thrift;\n"
"using Thrift.Collections;\n";
@@ -2134,8 +2135,9 @@ void t_netstd_generator::generate_service_server(ostream&
out, t_service* tservi
indent_up();
out << indent() << "private readonly IAsync _iAsync;" << endl
+ << indent() << "private readonly ILogger<AsyncProcessor> _logger;" <<
endl
<< endl
- << indent() << "public AsyncProcessor(IAsync iAsync)";
+ << indent() << "public AsyncProcessor(IAsync iAsync,
ILogger<AsyncProcessor> logger = default)";
if (!extends.empty())
{
@@ -2147,6 +2149,7 @@ void t_netstd_generator::generate_service_server(ostream&
out, t_service* tservi
indent_up();
out << indent() << "_iAsync = iAsync ?? throw new
ArgumentNullException(nameof(iAsync));" << endl;
+ out << indent() << "_logger = logger;" << endl;
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter)
{
string function_name = (*f_iter)->get_name();
@@ -2380,8 +2383,15 @@ void
t_netstd_generator::generate_process_function_async(ostream& out, t_service
<< indent() << "{" << endl;
indent_up();
- out << indent() << "Console.Error.WriteLine(\"Error occurred in
processor:\");" << endl
- << indent() << "Console.Error.WriteLine(ex.ToString());" << endl;
+ out << indent() << "var sErr = $\"Error occurred in {GetType().FullName}:
{ex.Message}\";" << endl;
+ out << indent() << "if(_logger != null)" << endl;
+ indent_up();
+ out << indent() << "_logger.LogError(ex, sErr);" << endl;
+ indent_down();
+ out << indent() << "else" << endl;
+ indent_up();
+ out << indent() << "Console.WriteLine(sErr);" << endl;
+ indent_down();
if (tfunction->is_oneway())
{