diff --git a/packages/grafana-ui/src/components/Logs/LogMessageAnsi.test.tsx b/packages/grafana-ui/src/components/Logs/LogMessageAnsi.test.tsx
index 8513ed4c114..0e59385fe8a 100644
--- a/packages/grafana-ui/src/components/Logs/LogMessageAnsi.test.tsx
+++ b/packages/grafana-ui/src/components/Logs/LogMessageAnsi.test.tsx
@@ -33,4 +33,20 @@ describe('', () => {
.text()
).toBe('ipsum');
});
+ it('renders string with ANSI codes with correctly converted css classnames', () => {
+ const value = 'Lorem [1;32mIpsum';
+ const wrapper = shallow();
+
+ expect(wrapper.find('span')).toHaveLength(1);
+ expect(
+ wrapper
+ .find('span')
+ .first()
+ .prop('style')
+ ).toMatchObject(
+ expect.objectContaining({
+ fontWeight: expect.any(String),
+ })
+ );
+ });
});
diff --git a/packages/grafana-ui/src/components/Logs/LogMessageAnsi.tsx b/packages/grafana-ui/src/components/Logs/LogMessageAnsi.tsx
index 2d71a276a34..c3018116b4d 100644
--- a/packages/grafana-ui/src/components/Logs/LogMessageAnsi.tsx
+++ b/packages/grafana-ui/src/components/Logs/LogMessageAnsi.tsx
@@ -15,7 +15,7 @@ function convertCSSToStyle(css: string): Style {
const match = line.match(/([^:\s]+)\s*:\s*(.+)/);
if (match && match[1] && match[2]) {
- const key = match[1].replace(/-(a-z)/g, (_, character) => character.toUpperCase());
+ const key = match[1].replace(/-([a-z])/g, (_, character) => character.toUpperCase());
// @ts-ignore
accumulated[key] = match[2];
}