{"_id":"storage-logger","_rev":"45-7ef36185775405f885d5c4bfb73c272c","name":"storage-logger","description":"storage-logger","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.1":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.1","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.1","dist":{"shasum":"b8555ddaf0d4f00831a50072282f6767d5e8264f","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.1.tgz","integrity":"sha512-ZW60msYMP/aFac11qP0fTFi9Dq/U/H/NAfCv6wW874tcA0QB+zkSB7pTVN/yZUTcLHo7a60CRwaUzxgJWSOaYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVRBGX03wlSgV4MR9m5mPrXV4Uo2QlIqAqE/hYhEw3iAiB0Ma72rSoBWCoulnXGC05HtmbVMmjV9nUrA1X0k5j+aw=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.2":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.2","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.2","dist":{"shasum":"948c6a959d75b9d4ac7fecf12d31f1332686b8bc","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.2.tgz","integrity":"sha512-EAf7C9MlWoWU5Cp4t01ceJCQNpaoLukt0FKsnxP5vEWUHCRm3g20N4fZ6+PACv8c68cCfFtxdZ7N+Rsm6et2Eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAik0+YCaiHzEH1s2/foo0RMxjoKOUQfnNyXBt93yapfAiEAxnIg00eluE03rr+MlH8fBfY22pMGlLXvWZxNY8m9/co="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.3":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.3","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.3","dist":{"shasum":"555147a621e15e488f68dc7ab2517e9f14bd989a","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.3.tgz","integrity":"sha512-jDrRJ1z+l28+K2uUnrALWkJu3TEl+F4vwcB6xIV16wu0HQBVwPjGH4HfDcjjYzetlHkql1c2MDdawsFYdAc1Mw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICpqN8mCr5GofEetxM6+dhFAPbCgaONa+JaES03LW1X+AiB0mUcA+OB42ayQoIAqJHm0utTdlN1duVjLQpoj2X5LaA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.4":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.4","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.4","dist":{"shasum":"65139f73a8dd7290345d2aa843887a0b9df45c80","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.4.tgz","integrity":"sha512-LxpinDM9AhD3rlmJSgS49ovna8X3+V8vn//f+83/A3IH05IiUC8yKRUVx6VG4FB6EzqMd3tS4OSOX+aS0R0ZgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDR+d71vB+ptbo1rCsYFiFd2Tcjtq2Sl5oEtRM8LqPRRAiEA5dMr8PnVQROoILOQbvZ58ERSxUsjt4nJcPvzOA7+xRM="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.5":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.5","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.5","dist":{"shasum":"3a42c4256ea117a08c71cba306f2ab0cafc29cb3","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.5.tgz","integrity":"sha512-vC6hRjyCf8mz2HX8QAU+ucPFyRBP/JlygD9QysR0lMMwFDP6nBjfVw3ZO7QA+bPvxb1pG7fPB6xUcKRz73xBCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXLwEn1DyHorbT/sfUjxpEHhzG+zMjcKBu5EzruBah0AiEArQem9bJ7RXyG5XJEH9YaP+A1cIY35daY7jFOpko72eM="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.6":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.6","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.6","_from":".","dist":{"shasum":"0b67f32ad1dc670446735b76d5439da3d597c0c0","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.6.tgz","integrity":"sha512-9XrNheskOv7uJROpirwWU0figUenmekVjLQVzW655kAIJZUcw7/4VGtKcfJZX4SmQF6RE/h1cGI4jHFChl6q4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNSKNeSIs/jj0pXPv4PRIxcx0ogKwa9WmmzmmLWTCQVAIgbHQtMaAzXcLEs4OUU4rsE6di3sU7qCIRRAyhtN+Rsqo="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.7":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.7","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.7","_from":".","dist":{"shasum":"f9b158f21240e05655941f7168c5cf56a9a21739","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.7.tgz","integrity":"sha512-VURKSDyYnoIuT4fkVLDKTsymIFEtbjay1VPJIAnRZ7O010EYqGxV+lygrElGLTusj1Q3xzuluvvj1t5b38BCRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICK+jfaVrWLMQQahvpzX759EB+PZSV5MzAL9X52nHW1lAiEAq1ZwkFTzJ/zEKlF5ipbvSr8JKE9zLHba3VCJ0Gbpj5o="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.8":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.8","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.8","_from":"storage-logger@*","dist":{"shasum":"3452a46b9ef1d1125f12d07b63ab42dcf23187cc","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.8.tgz"},"_npmVersion":"1.1.66","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.1.9":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.1.9","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.1.9","_from":"storage-logger@*","dist":{"shasum":"47c997643b8895851d4c89bb84825b7108d41601","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.1.9.tgz"},"_npmVersion":"1.1.66","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.2.0":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.2.0","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"*","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.2.0","_from":".","dist":{"shasum":"4b04f6b0895092ed40563a7d9cb5bacd7baddf16","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.2.0.tgz","integrity":"sha512-fBli0LA/jR05EJ2S6tr0j0RAZxG5scp7urB8lALRbzPGQ/MAyFIjXWhWVPGGLbBZMtgoBo4wL5K4/kwYDIPTmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJkh6ONESIWGLhs7o82OvVtm2X5207iYX2AQ1s9Vdx7AiBK5ZphT5MUDzjipijK9vL9sPLDILMQkwX5N7LVEPTuPg=="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.2.1":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.2.1","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"0.6.12","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*","graceful-fs":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.2.1","_from":".","dist":{"shasum":"485498402ae428e1ec20a7c7affa78f7ef63aaac","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.2.1.tgz","integrity":"sha512-N6sl/GzVo0BC628FnjsBszlerF8+Tx3nM6ejMmXc7fE7xn0pTHnq1LTU6zVNaQJ79kvzJI2IJ72/xlig2dCsSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvhBXYXSC/eYUf25sy84mRQKLgdyt7yjufguNWzIRFwQIgZzrBaIsUk/TdrhgJn1taB2AB3D0uRU3L38cktZXBWz8="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.2.2":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.2.2","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"0.6.12","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*","graceful-fs":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.2.2","_from":".","dist":{"shasum":"65459ed8dd86b59383b2f5f4110ad3f3e2fe6325","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.2.2.tgz","integrity":"sha512-SUVUH2jO9LgyuepWl6qpVeKHRtx3vm9J6QxU/Lj1Gp8umAsONE8ffL+xF0nrh11kv9pcLNPW2FAHFdri+hwWyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc0ih8AxCsvl8WdoTjhnstvZTsmm9PhDCbuUWMAHGmRAIgKApKoWcNAFnJ1x8BBfQqO7kYW698OEJqA1QjrCz3o1c="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]},"0.2.3":{"author":{"name":"interlude"},"name":"storage-logger","version":"0.2.3","description":"storage-logger","repository":{"url":""},"main":"./lib/logger.js","bin":{"writelog":"./bin/writelog","synclogs":"./bin/storelogs"},"dependencies":{"log4js":"0.6.12","underscore":"*","mkdirp":"*","moment":"*","aws-sdk":"*","async":"*","graceful-fs":"*"},"engines":{"node":"*"},"_id":"storage-logger@0.2.3","_from":".","dist":{"shasum":"3a95cd62d717e8ff55bc705a08aee3779a1f24ae","tarball":"https://registry.npmjs.org/storage-logger/-/storage-logger-0.2.3.tgz","integrity":"sha512-PRE9jtqALSCwYzaUfmIPnkVbSbMZYYjYAfGD73TFOM64fseaB3U/O/1rZXr8nSE7xyBGe9ukgmS0C8DkM1oXEA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJBQiwLH3A8QgZN6zEuXuLnrQtDXPrCsFAOO9+4OYbSAiEAoHZgE7CnXHMy4Gkp98Kl4TAArH1XoECGRTjxR4nFPQM="}]},"_npmVersion":"1.3.8","_npmUser":{"name":"ofer.velich","email":"ofer@interlude.fm"},"maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}]}},"readme":"This module will be responsible for uploading the incoming logs, to a storage(S3), in a desired format. In our case, to the format that Redshift will expect.\n\nThe module will upload to storage the:\n1. formated version of the log.\n2. original version of the log.\n\nThe log will be written to disk before they will be uploaded to storage.\nA new log file will be created on every new date (configured).\nAnd when ever log size exceed the limit (configured).\n\nAfter the logs are uploaded, the files will be moved in to an archive folder (unless you will configured differently)\nIf the logs fail to upload, the files will be moved in to an errors-archive folder (unless you will configured differently)\n\nThe module comes with the following API:\n\twrite(dataObjectOrJson)\n\tstore(configurationFileOrObject)\n\tconfigure(configurationFileOrObject)  \n\nThe module can be configured with the following json file:\n\n{\n\t\"datafile\"\t\t\t: \"/path/to/data.log\", \t\t\t\t\t[optional, default to ../storage-logger/data.log]\n\n\t\"origfile\"\t\t\t: \"/path/to/orig.log\", \t\t\t\t\t[optional, default to ../storage-logger/orig.log]\n\t\n\t\"archiveDir\"     \t: \"/path/to/archive\",  \t\t\t\t\t[optional, default to ../storage-logger-archive]\n\t\n    \"errorsDir\"       \t: \"/path/to/archive-errors\",  \t\t\t[optional, default to ../storage-logger-archive-errors]\n\t\n    \"archive\"         \t: true,  \t\t\t\t\t\t\t\t[optional, default to true]\n\t\n    \"archive_errors\"  \t: true,  \t\t\t\t\t\t\t\t[optional, default to true]\n\n\t\"sizeLimit\"\t\t\t: \"5000\",  \t\t\t\t\t\t\t\t[optional, default to true] \n\t\n\t\"datePattern\"\t\t: \"yyyy-MM-dd\",  \t\t\t\t\t\t[optional, default to yyyy-MM-dd]\n\n\t\"delimiter\"\t\t\t: \",\",  \t\t\t\t\t\t\t\t[optional, default to ',']\n\n\t\"event_schema\": {\n\t\t\"input_key1\" \t\t: \t{ \"name\" : \"output_key1\", \t\"type\" : \"string\" },\n\t\t\"input_key2\" \t\t: \t{ \"name\" : \"output_key2\", \t\"type\" : \"timestamp\", \"format\" : \"YYYY-MM-DD HH:mm:ss\", \"required\": true },\n\t\t\"input_key3\" \t\t: \t{ \"name\" : \"output_key2\", \t\"type\" : \"bool\" },\n\t\t\"input_key4\" \t\t: \t{ \"name\" : \"output_key3\", \t\"type\" : \"number\" }\n\t},\n\n\t\"aws\": {\n\t\t\"access_key\" : \"XXXXXXXXXXXXXXXXXX\",\n\t\t\"secret_key\" : \"XXXXXXXXXXXXXXXXXX\",\n\t\t\"bucket\" : \"path.to.s3.bucket\"\n\t}\n}\n\n\nAs you can see the event_schema has a very detailed structure.\nFor each \"input_entry\" there is a field object, that describe the:\n1. output_key (must).   \n2. type (optional). Will help for the module to ensure the log is valid   \n3. required (optional). If the field is required, but it missing or it's not valid, the log will be not wirtten and the data will be return to the sender. (otherwise null will be returned).\n\nThe configuration has been designed to fail fast, so if you will make error in the conf file it will fail.\n\nAfter been that said... i have i have NO bugs :)","maintainers":[{"name":"ofer.velich","email":"ofer@interlude.fm"}],"time":{"modified":"2022-07-13T15:49:16.038Z","created":"2014-03-16T23:21:11.604Z","0.1.1":"2014-03-16T23:21:11.604Z","0.1.2":"2014-03-16T23:30:57.978Z","0.1.3":"2014-03-16T23:34:36.083Z","0.1.4":"2014-03-17T10:28:47.261Z","0.1.5":"2014-03-17T12:45:42.596Z","0.1.6":"2014-03-30T23:17:35.230Z","0.1.7":"2014-03-30T23:20:47.075Z","0.1.8":"2014-04-17T08:17:57.224Z","0.1.9":"2014-04-17T08:35:16.260Z","0.2.0":"2014-04-17T08:45:43.197Z","0.2.1":"2014-04-23T08:11:51.115Z","0.2.2":"2014-04-23T11:24:27.703Z","0.2.3":"2014-04-23T12:20:49.802Z"},"repository":{"url":""},"author":{"name":"interlude"},"readmeFilename":"README.md"}