首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用log4javascript框架将日志消息从angularjs应用程序发送到服务器?

如何使用log4javascript框架将日志消息从angularjs应用程序发送到服务器?
EN

Stack Overflow用户
提问于 2015-07-10 03:02:41
回答 1查看 576关注 0票数 0

我用angular js编写了下面的代码来准备一个记录器,用于向服务器发送消息。

代码语言:javascript
复制
var demo = angular.module('ng-logging', []);

demo.config(function ($provide) {

    $provide.decorator('$log', function ($delegate, $sniffer) {

        var _info = $delegate.info; //Saving the original behavior
        var _error = $delegate.error; //Saving the original behavior
        var log = log4javascript.getLogger();
        var ajaxAppender = new log4javascript.AjaxAppender('/api/log');

        ajaxAppender.setThreshold(log4javascript.Level.ALL);

        log.addAppender(ajaxAppender);

        $delegate.info = function (msg) {
            _info(msg);
            log.info(msg);
        };

        $delegate.error = function (msg) {
            _error(msg);
            log.error(msg);
        };

        return $delegate;
    });
});

服务器端:

代码语言:javascript
复制
public class PaymentController : ApiController
{
    [Route("api/log")]
    public void Log(string message)
    {

    }
}

用法:我正在尝试使用上面配置的$log提供程序向服务器发送消息,如下所示。

代码语言:javascript
复制
var payControllers = angular.module('pay.controllers', ['ui.bootstrap']);

payControllers.controller('PaymentCtrl', ['$scope', '$location', '$routeParams', 'payDataService',
  function ($scope, $location, $routeParams, service, $log) {

$scope.sendPayment = function () { 
    $log.info("Sending payment");
    };
 }]);

当我测试它的时候,我得到一个错误提示'$log is undefined‘。我不确定实现这一点的正确方法是什么。我正在尝试阅读这篇文章。http://statelessprime.blogspot.com/2013/10/send-logging-and-exceptions-to-server.html

谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2015-10-17 03:56:50

下面是我如何在客户端完成同样的事情。我在我的主模块上定义了一个工厂方法,从而覆盖了默认的$log角度记录器。(angular已经在$log中定义了一个记录器)。这可能就是为什么你会得到一个未定义的$log。我还注意到您没有为您的附加器设置布局。我建议使用json布局。否则,你只能得到一个http post,而且你必须自己解析字符串。我不能帮助你的服务器端,因为我不知道你使用的是什么web框架。最后,不要忘记将"$log“注入到工厂/指令中。

代码语言:javascript
复制
angular.module('main_module')
.factory('$log', function() {
    var logger = log4javascript.getLogger();

    var ajaxAppender = new log4javascript.AjaxAppender("/restfulConfigApi/logger.api");
    ajaxAppender.addHeader("Content-Type", "application/json");
    ajaxAppender.setWaitForResponse(true);
    ajaxAppender.setLayout(new log4javascript.JsonLayout());

    //ajaxAppender.setRequestSuccessCallback(requestCallback);
    logger.addAppender(ajaxAppender);
    return logger;
});

注入$log的示例

(function() { 'use strict';

代码语言:javascript
复制
angular.module("main_module").directive('a directive', a_directive);
conContextualIntelligencePublisher.$inject = [ "blah"... , "$log"];

function a_directive(blah ... , $log) { ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31326084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档