[ 
https://issues.apache.org/jira/browse/CB-8198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14739068#comment-14739068
 ] 

ASF GitHub Bot commented on CB-8198:
------------------------------------

Github user daserge commented on a diff in the pull request:

    https://github.com/apache/cordova-cli/pull/222#discussion_r39181657
  
    --- Diff: src/logger.js ---
    @@ -0,0 +1,112 @@
    +/*
    + Licensed to the Apache Software Foundation (ASF) under one
    + or more contributor license agreements.  See the NOTICE file
    + distributed with this work for additional information
    + regarding copyright ownership.  The ASF licenses this file
    + to you under the Apache License, Version 2.0 (the
    + "License"); you may not use this file except in compliance
    + with the License.  You may obtain a copy of the License at
    +
    + http://www.apache.org/licenses/LICENSE-2.0
    +
    + Unless required by applicable law or agreed to in writing,
    + software distributed under the License is distributed on an
    + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + KIND, either express or implied.  See the License for the
    + specific language governing permissions and limitations
    + under the License.
    + */
    +
    +var util = require('util'),
    +    ansi = require('ansi'),
    +    Stream = require('stream'),
    +    cordova_lib = require('cordova-lib'),
    +    CordovaError = cordova_lib.CordovaError;
    +
    +var logger = {
    +    levels: {},
    +    prefixes: {},
    +    colors: {},
    +    output: process.stdout
    +};
    +
    +logger.cursor = ansi(logger.output);
    +
    +function formatError(error, isVerbose) {
    +    var message = '';
    +    if(isVerbose) {
    +        message = error.stack;
    +    } else {
    +        message = error.message;
    +    }
    +
    +    if(error instanceof CordovaError && error.code !== 
CordovaError.UNKNOWN_ERROR) {
    +        var codePrefix = 'code: ' + error.code
    +            + (isVerbose ? (' (' + error.getErrorCodeName() + ')') : '');
    +
    +        if(error.code === CordovaError.EXTERNAL_TOOL_ERROR && typeof 
error.context !== 'undefined') {
    +            var context = isVerbose
    +                ? (suffix + error.toString() + suffix)
    +                : ('\'' + error.context.cmdShortName + '\' ' + 
error.message);
    +
    +            message = codePrefix + ' ' + context;
    +        } else {
    +            message = codePrefix + ' ' + message;
    +        }
    +    }
    +
    +    return message;
    +}
    +
    +logger.log = function (logLevel, message) {
    +    if (this.levels[logLevel] >= this.levels[this.logLevel]) {
    +        var isVerbose = this.logLevel === 'verbose';
    +        var prefix = this.prefixes[logLevel] ? this.prefixes[logLevel] + 
': ' : '';
    +        suffix = '\n';
    +
    +        if(message instanceof Error) {
    +            message = formatError(message, isVerbose);
    +        }
    +
    +        message = prefix + message + suffix;
    +
    +        if (!this.cursor) {
    +            this.output.write(message);
    +        }
    +        if (this.output !== this.cursor.stream) {
    +            this.cursor = ansi(this.output, { enabled: colorEnabled });
    +        }
    +        var color = this.colors[logLevel];
    +        !!color && this.cursor.bold().fg[color]();
    +        this.cursor.write(message);
    +        this.cursor.reset();
    +    }
    +};
    +
    +logger.addLevel = function (level, severity, prefix, color) {
    +    this.levels[level] = severity;
    --- End diff --
    
    I believe it creates a dictionary of level-severity correspondence actually.
    Log level is set up in `setLevel`.


> Unified console output logic for core platforms
> -----------------------------------------------
>
>                 Key: CB-8198
>                 URL: https://issues.apache.org/jira/browse/CB-8198
>             Project: Apache Cordova
>          Issue Type: New Feature
>          Components: Android, iOS, Windows, WP8
>            Reporter: Vladimir Kotikov
>            Assignee: Sergey Shakhnazarov
>
> Currently all major platform scripts doesn't recognize trace levels and 
> always logging all their output to console.
> This could be unuseful, especially when a huge output from build tools is put 
> to console (ant build/xcodebuild output is really huge and in most cases is 
> unnecessary)
> I propose to unify the way we write messages to console output:
> 1. Pass verbosity arguments (-d, --debug ) downstream to platform scripts.
> 2. Introduce special Log class which is shared across platform scripts
>     * automatically detects trace level according to command line arguments;
>     * support of output redirection (file, other) in the future?
> 3. Add support for the following verbosity levels: Error, Normal, Debug
>     * by default: Error and Normal messages are traced
>     * -silent: only Error messages are traced
>     * -verbose: everything is traced



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to