Angular 分析 Splunk 日志记录

Angular Analytics Splunk Logging

我有一个 angular 页面是我为公司开发的。我想跟踪的使用统计信息。只是非常基本的信息,例如点击次数。我正在尝试使用发现 here 的 angulartics 插件。到目前为止,这是我从 git 示例文件夹复制的 angular 页面中的内容:

HTML:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Topic Tester</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="static/js/angular.min.js"></script>
    <script src="static/js/angulartics.min.js"></script>
    <script src="static/js/angulartics-splunk.min.js"></script>
    <script src="static/js/controller.js"></script>
    <script type="text/javascript">
        var sp=sp||[];
        (function(){var e=["init","identify","track","trackLink","pageview"], t=function(e){return function(){sp.push([e].concat(Array.prototype.slice.call(arguments,0)))}};
            for(var n=0;n<e.length;n++)sp[e[n]]=t(e[n])})(), sp.load=function(e,o){sp._endpoint=e;
            if(o){sp.init(o)};
            var t=document.createElement("script");
            t.type="text/javascript",t.async=!0,t.src=("https:"===document.location.protocol?"https://":"http://")+"d21ey8j28ejz92.cloudfront.net/analytics/v1/sp.min.js";
            var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};

        sp.load("http://localhost:9000/api/log");
    </script>
</head>

JS

var app = angular.module('myApp',['angulartics', 
                                    'angulartics.splunk']);

当然,html 中的脚本需要根据端点进行调整,但我在那里遇到了问题。我公司的方式。有 splunk 日志记录设置是这样的: 开发人员在 java 应用程序中执行他们想要的任何类型的日志记录。所有日志记录都转到 catalina.out。应用程序被部署到各种远程服务器(Dev、QA、Prod)。开发人员可以 运行 在公司域托管的企业 splunk 中搜索查询,以在特定框(开发框)中搜索特定日志文件(tomcat.logcatalina.out 等)。

在这种情况下,我将如何使 angular 应用程序记录到一个文件(不必是 catalina.out obv,因为 splunk 可以查询任何日志文件)从而 splunk 将是可以从部署箱中取出它吗?

如果那不可能,我是否需要在 sp.load 行中放置一些 splunk 端点,以便 angular 页面将其统计信息直接发送到 splunk?

这里有几个选项。

如果您想像贵公司使用的 Java 应用那样登录到一个文件,您需要创建一个后端服务,您的 Angular 应用可以将数据发送到该后端服务。然后该后端服务可以写入文件。

如果您是 运行 Splunk 6.3 或更新版本,您可以使用 HTTP Event Collector to send events over HTTP with better performance all around. You can use our Splunk logging for JavaScript library with browserify, see this GitHub issue 了解更多详细信息。

我一直在研究基于 angular-loggly-logger 的更即插即用的 Angular (1.5) 解决方案,它可能更易于使用:https://github.com/mer10z/angular-splunk-logger

它使用 $http 到 post Splunk HTTP 事件收集器,因此您不需要 browserify 或任何其他外部依赖项。