---
title: logger
---

# logger

A logging interceptor for console printing, similar to redux-logger.

<Image src="/images/panel/sdm-interceptor-logger.jpg" />

## Integration Guide

logger can be used to print logs for SDM initialization, DP sending, and event callback chains. If you manually replace an interceptor array, add `logger` back explicitly on that chain.

### Integrate logger for your scenario

> src/devices/index.ts

```ts | pure
import { SmartDeviceModel, logger } from '@ray-js/panel-sdk';
import { defaultSchema } from '@/devices/schema';

type SmartDeviceSchema = typeof defaultSchema;

const options = {
  interceptors: {
    init: {
      initDpState: [logger],
      initDevInfo: [logger],
    },
    request: {
      publishDps: [logger],
    },
    response: {
      onDpDataChange: [logger],
      onDeviceOnlineStatusUpdate: [logger],
      onDeviceInfoUpdated: [logger],
      onNetworkStatusChange: [logger],
      onBluetoothAdapterStateChange: [logger],
    },
  },
};

export const devices = {
  common: new SmartDeviceModel<SmartDeviceSchema>(options),
};
```

## Supported Chains

| Category | Available entries |
| ----- | ----- |
| `init` | `initDpState`, `initDevInfo` |
| `request` | `publishDps` |
| `response` | `onDpDataChange`, `onDeviceOnlineStatusUpdate`, `onDeviceInfoUpdated`, `onNetworkStatusChange`, `onBluetoothAdapterStateChange` |

## API

```ts | pure
export declare const logger: Interceptor<any, any, any>;
```
