[
https://issues.apache.org/jira/browse/CB-8198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14739020#comment-14739020
]
ASF GitHub Bot commented on CB-8198:
------------------------------------
Github user nikhilkh commented on a diff in the pull request:
https://github.com/apache/cordova-cli/pull/222#discussion_r39179238
--- 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 --
It's odd that adding the level, ends up setting the current level to that
value.
> 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: [email protected]
For additional commands, e-mail: [email protected]