How should I implement verbose logging in an npm package?











up vote
0
down vote

favorite












I have created an npm package (for internal use) that can be used as follows. Note the verboseLogging option.



import * as q from 'q'

var client = q.createClient({verboseLogging: true})


I have implemented the verboseLogging as plenty of console.log(...) statements.



This works well when the consumer of the package is a NodeJS command line application, but not as well when the consumer of the package is a browser.



When I consume this package in a browser application, I have needed to do something like the following to get the logs displayed to the user:



const originalConsoleLog = console.log;

console.log = function() {
// extract log message and save somewhere to be shown in DOM
originalConsoleLog.apply(this, arguments)
}


Is there maybe a better way to enable logging in an npm package that is accessible to both command line apps and browser apps?










share|improve this question


















  • 1




    what issue is it causing?
    – vibhor1997a
    17 hours ago










  • @vibhor1997a: The only issue is that I must monkey patch console.log
    – user1283776
    16 hours ago















up vote
0
down vote

favorite












I have created an npm package (for internal use) that can be used as follows. Note the verboseLogging option.



import * as q from 'q'

var client = q.createClient({verboseLogging: true})


I have implemented the verboseLogging as plenty of console.log(...) statements.



This works well when the consumer of the package is a NodeJS command line application, but not as well when the consumer of the package is a browser.



When I consume this package in a browser application, I have needed to do something like the following to get the logs displayed to the user:



const originalConsoleLog = console.log;

console.log = function() {
// extract log message and save somewhere to be shown in DOM
originalConsoleLog.apply(this, arguments)
}


Is there maybe a better way to enable logging in an npm package that is accessible to both command line apps and browser apps?










share|improve this question


















  • 1




    what issue is it causing?
    – vibhor1997a
    17 hours ago










  • @vibhor1997a: The only issue is that I must monkey patch console.log
    – user1283776
    16 hours ago













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have created an npm package (for internal use) that can be used as follows. Note the verboseLogging option.



import * as q from 'q'

var client = q.createClient({verboseLogging: true})


I have implemented the verboseLogging as plenty of console.log(...) statements.



This works well when the consumer of the package is a NodeJS command line application, but not as well when the consumer of the package is a browser.



When I consume this package in a browser application, I have needed to do something like the following to get the logs displayed to the user:



const originalConsoleLog = console.log;

console.log = function() {
// extract log message and save somewhere to be shown in DOM
originalConsoleLog.apply(this, arguments)
}


Is there maybe a better way to enable logging in an npm package that is accessible to both command line apps and browser apps?










share|improve this question













I have created an npm package (for internal use) that can be used as follows. Note the verboseLogging option.



import * as q from 'q'

var client = q.createClient({verboseLogging: true})


I have implemented the verboseLogging as plenty of console.log(...) statements.



This works well when the consumer of the package is a NodeJS command line application, but not as well when the consumer of the package is a browser.



When I consume this package in a browser application, I have needed to do something like the following to get the logs displayed to the user:



const originalConsoleLog = console.log;

console.log = function() {
// extract log message and save somewhere to be shown in DOM
originalConsoleLog.apply(this, arguments)
}


Is there maybe a better way to enable logging in an npm package that is accessible to both command line apps and browser apps?







node.js logging npm






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 17 hours ago









user1283776

3,0262152104




3,0262152104








  • 1




    what issue is it causing?
    – vibhor1997a
    17 hours ago










  • @vibhor1997a: The only issue is that I must monkey patch console.log
    – user1283776
    16 hours ago














  • 1




    what issue is it causing?
    – vibhor1997a
    17 hours ago










  • @vibhor1997a: The only issue is that I must monkey patch console.log
    – user1283776
    16 hours ago








1




1




what issue is it causing?
– vibhor1997a
17 hours ago




what issue is it causing?
– vibhor1997a
17 hours ago












@vibhor1997a: The only issue is that I must monkey patch console.log
– user1283776
16 hours ago




@vibhor1997a: The only issue is that I must monkey patch console.log
– user1283776
16 hours ago












1 Answer
1






active

oldest

votes

















up vote
1
down vote













One of possible solutions is to check if window variable id defined. Since it only presents in a browser, you can try something like this:



if (typeof window === 'undefined') {
// we're server side, let console.log as is
} else {
// browser environment, DOM is accessible, additional logging goes here
}





share|improve this answer








New contributor




Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.


















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407837%2fhow-should-i-implement-verbose-logging-in-an-npm-package%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    1
    down vote













    One of possible solutions is to check if window variable id defined. Since it only presents in a browser, you can try something like this:



    if (typeof window === 'undefined') {
    // we're server side, let console.log as is
    } else {
    // browser environment, DOM is accessible, additional logging goes here
    }





    share|improve this answer








    New contributor




    Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      1
      down vote













      One of possible solutions is to check if window variable id defined. Since it only presents in a browser, you can try something like this:



      if (typeof window === 'undefined') {
      // we're server side, let console.log as is
      } else {
      // browser environment, DOM is accessible, additional logging goes here
      }





      share|improve this answer








      New contributor




      Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















        up vote
        1
        down vote










        up vote
        1
        down vote









        One of possible solutions is to check if window variable id defined. Since it only presents in a browser, you can try something like this:



        if (typeof window === 'undefined') {
        // we're server side, let console.log as is
        } else {
        // browser environment, DOM is accessible, additional logging goes here
        }





        share|improve this answer








        New contributor




        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        One of possible solutions is to check if window variable id defined. Since it only presents in a browser, you can try something like this:



        if (typeof window === 'undefined') {
        // we're server side, let console.log as is
        } else {
        // browser environment, DOM is accessible, additional logging goes here
        }






        share|improve this answer








        New contributor




        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        share|improve this answer



        share|improve this answer






        New contributor




        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        answered 17 hours ago









        Anton Pastukhov

        554




        554




        New contributor




        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





        New contributor





        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        Anton Pastukhov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407837%2fhow-should-i-implement-verbose-logging-in-an-npm-package%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

            Calculate evaluation metrics using cross_val_predict sklearn

            Insert data from modal to MySQL (multiple modal on website)