# ConsoleText

Enhanced console logging with colorization and remote capabilities for Node.js applications.

## Features

- 🎨 **Colorized Console Output**: Improve readability with color-coded log levels
- 🌐 **Remote Logging**: Send selected logs to a remote server endpoint
- 🔄 **Preserve Original Console**: Easily restore original console behavior
- 🛠️ **Configurable**: Customize behavior with simple options
- 📝 **Custom Log Method**: Special `console.text()` method for remote logging

## Installation

```bash
npm install consoletext
```

## Quick Start

```javascript
const { createConsoleText } = require('consoletext');

// Initialize with default options
const ConsoleText = createConsoleText();

// Use enhanced console methods
console.log('Regular log message');
console.info('Info message in blue');
console.warn('Warning message in yellow');
console.error('Error message in red');
console.debug('Debug message in green');

// Use custom text method (for remote logging)
console.text('This can be sent to a remote server if configured');

// When done, restore original console behavior
ConsoleText.restore();
```

## Configuration

```javascript
const { createConsoleText } = require('consoletext');

const ConsoleText = createConsoleText({  
  // API key for authentication (optional)
  apiKey: 'your-api-key',
  
  // Enable/disable colorization (default: true)
  colorize: true,
  
  // Enable/disable console output (default: false)
  silent: false
});
```

## Using with React

### Basic Setup

```javascript
// src/logger.js
import { createConsoleText } from 'consoletext';

export const logger = createConsoleText({
  apiKey: process.env.REACT_APP_LOGGING_API_KEY
});
```

```javascript
// src/index.js or App.js
import { logger } from './logger';

// Initialize logger early in your app
logger.init();

// Use in your components
function App() {
  useEffect(() => {
    console.info('App mounted');
    console.text('This will be sent to the server');
    
    // Cleanup on unmount
    return () => logger.restore();
  }, []);

  return <div>Your App</div>;
}
```

### Custom Hook

```javascript
// src/hooks/useLogger.js
import { useEffect } from 'react';
import { createConsoleText } from 'consoleText';

export function useLogger(config = {}) {
  useEffect(() => {
    const logger = createConsoleText(config);
    logger.init();
    
    return () => logger.restore();
  }, []);
}

// Usage in component
function MyComponent() {
  useLogger({
    colorize: true
  });

  return <div>Component with logging</div>;
}
```

## Remote Logging

Only the `console.text()` method sends logs to the remote server. Other console methods are enhanced but only output locally.

```javascript
// Configure with remote endpoint
const ConsoleText = createConsoleText({
  apiKey: 'your-api-key'
});

// This will be sent to the remote server
console.text('Important information to log remotely');

// These will only appear in the local console
console.log('Local log message');
console.info('Local info message');
```

## Advanced Usage

### Manual Initialization

```javascript
const { ConsoleText } = require('consoleText');

// Create instance without auto-initialization
const logger = new ConsoleText({
  colorize: true,
});

// Initialize when ready
logger.init();

// Use enhanced console
console.log('Console is now enhanced');

// Restore when done
logger.restore();
```

## API Reference

### `createConsoleText(config)`

Creates and initializes a new ConsoleText instance.

- `config` (Object): Configuration options
  - `endpoint` (String): URL for remote logging
  - `apiKey` (String): Authentication key for remote endpoint
  - `colorize` (Boolean): Whether to colorize console output (default: true)
  - `silent` (Boolean): Whether to suppress console output (default: false)

Returns an initialized ConsoleText instance.

### `ConsoleText`

Class that provides console enhancement functionality.

#### Methods

- `init()`: Overrides console methods with enhanced versions
- `restore()`: Restores original console behavior

## Examples

See the [examples](./examples) directory for more usage examples.

## License

MIT