无法使用log4javascript将客户端日志发送到服务器(Asp.net Web API)

暗物质

要求:添加客户端日志记录并将其发送到服务器。服务器中的开发人员应该能够启用或禁用此日志记录功能。

我的方法:我创建了一个ASP.NET WebAPI项目,在其中创建了POST方法以将日志数据写入本地文件。因此,我可以添加和监视客户端日志。

现在,从客户端,我无法调用post方法。我用过log4javascript。在那里,我得到了AjaxAppender向服务器发送请求。

使用log4javascript的JS代码:

// Create the logger
var log = log4javascript.getLogger();

// Create a AjaxAppender with default options
var ajaxAppender = new log4javascript.AjaxAppender('http://localhost:59132/api/log');

// If you want to send JSON
var jsonLayout = new log4javascript.JsonLayout();

// Add configuration for ajaxAppender
//ajaxAppender.setThreshold(log4javascript.Level.ERROR); // Sets the appender's threshold. Log messages of level less severe than this threshold will not be logged.
//ajaxAppender.setBatchSize(10); // Sets the number of log messages to send in each request.
//ajaxAppender.sendAll(); // send all remaining messages on window.beforeunload()
ajaxAppender.addHeader("Content-Type", "application/json");
ajaxAppender.setLayout(jsonLayout);

// Adds the given appender
log.addAppender(ajaxAppender);

// Log message
log.debug("Debug");
log.info("Info");
log.warn("Warning");
log.error("Error");
log.fatal("Fatal");

服务器端代码:

[HttpPost]
public void Post([FromBody]List<string> value)
{
    string path = AppDomain.CurrentDomain.BaseDirectory + "Log.txt";
    foreach(string s in value)
    {
        using (StreamWriter writetext = new StreamWriter(path, true))
        {
            writetext.WriteLine("Log: " + s.ToString() + " " + DateTime.Now);
        }
    }
}

而且,使用jQuery Ajax我可以发送日志消息,但是我不认为我应该在我的项目中实现这一点,因为我将日志存储在数组中并且没有任何配置集(即,我不会能够启用和禁用JS日志记录功能)。

使用jQuery Ajax的JS代码:

$(document).ready(function (){
    var logArr = [];
    logArr.push("Error - XYZ " + "URL: " +  window.location.href);
    logArr.push("Info - PQRS " + "URL: " + window.location.href);
    logArr.push("Warning - MNOP " + "URL: " +  window.location.href);
    sendError(logArr)
    });

function sendError(message) {
$.ajax({
    url: "/api/log",
    type: 'POST',
    async: true,
    data: JSON.stringify(message),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function () {
        console.log("Success");
    },
    error: function (e) {
        console.log("Failure " + e.message);
    }
});
}

log4JS,JSNLog可以解决此问题吗?请在这里指导我。

注意:我们将不会使用任何错误跟踪工具,例如:errlytics,rollbar等。

用户名

我是JSNLog的作者。

JSNLog包括.Net的服务器端端点,该端点将记录到您喜欢的日志记录包(Serilog,Log4Net等)中。它同时支持ASP.NET CORE和ASP.NET Framework(ASP.NET的非核心版本)。它具有许多很棒的功能(以我的偏见):http : //jsnlog.com

我了解您想让服务器端开发人员控制服务器端日志记录。使用JSNLog,可以通过服务器端代码来控制客户端记录器有关其工作方式的详细信息,请参见:http : //jsnlog.com/Documentation/Configuration/OnServer

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将图像从 ASP.NET Web API 发送到 Angular 客户端

ASP.NET Web API 2分离Web客户端和Web服务器开发

将Cookie从客户端发送到Web API

如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API

IOS客户端的流视频问题(基于ASP.NET WEB API 2开发的服务器)

如何从 .NET Core Web API 服务器 docker 容器将标签打印作业发送到网络 CUPS/Raspberry Pi 打印服务器?

使用REST API将图像从服务器发送到客户端

如何使用angular将文件发送到asp.net Web API?

无法使用http客户端获取asp.net Web API令牌

Angular / Web API:将FormFile信息从客户端发送到API

通过Web服务将pdf文件从服务器发送到客户端

将数据从客户端发送到服务器-REST Web服务

使用Web Api作为客户端的SignalR [.Net Core]

asp.net core web api如何从客户端发送json对象c#

ASP.Net Web API HttpClient 不会将数据发送到目标 Web API Uri

AngularJS $ http.post()将null发送到ASP.NET Web API控制器方法

Azure SignalR服务| Asp.Net Web API | 控制台客户端

使用Signalr和Java客户端将json对象发送到.net服务器

ASP.NET Web API将复杂对象发送到前端

将 ASP.NET MVC HttpContext 发送到 Web Api HttpContext

ASP.Net Web API与.Net核心Web API

如何获取Web客户端处理表单,以在不使用客户端脚本的情况下将页面ID信息发送到服务器

如何从服务器端(asp.net web api / mvc)向 xamarin 表单应用程序发送请求?

使用身份服务器 4 保护 asp.net web api 2 项目

ASP.NET Web Api SendAsync使服务器等待

如何使用asp net core http客户端将文件和文本数据发布到web api?

保护多个客户端使用ASP.NET Web API 2的最佳方法

对ASP.NET Web API的请求的“透明”服务器端代理

将原始数据从 PHP 服务器 API 发送到 Swift 客户端 API