Skip to content

Commit cc6c99f

Browse files
committed
feat(logging): add sentry logging
closes #142
1 parent f1e13bf commit cc6c99f

8 files changed

Lines changed: 54 additions & 4 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Build Folder
22
build
3-
3+
config/main.local.js
44
# Logs
55
logs
66
*.log

config/main.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ var config = {
66
port: process.env.PORT || 8889,
77
karmaPort: 9876,
88
ssr: true,
9+
sentry: false,
10+
// sentry: {
11+
// dsn: "",
12+
// release: ""
13+
// },
914

1015
// This part goes to React-Helmet for Head of our HTML
1116
app: {

config/webpack/dev.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ const createIfDoesntExist = dest =>
103103
}
104104
}
105105

106+
const copySyncIfDoesntExist = (src, dest) => {
107+
if(fs.existsSync(dest)) return;
108+
copySync(src, dest);
109+
};
110+
111+
copySyncIfDoesntExist('./config/main.js', './config/main.local.js');
106112
createIfDoesntExist('./build');
107113
createIfDoesntExist('./build/public');
108114
copySync('./src/favicon.ico', './build/public/favicon.ico', true);

config/webpack/prod.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ const createIfDoesntExist = dest => {
115115
fs.mkdirSync(dest);
116116
}
117117
}
118+
const copySyncIfDoesntExist = (src, dest) => {
119+
if(fs.existsSync(dest)) return;
120+
copySync(src, dest);
121+
};
122+
123+
copySyncIfDoesntExist('./config/main.js', './config/main.local.js');
118124

119125
createIfDoesntExist('./build');
120126
createIfDoesntExist('./build/public');

config/webpack/server.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ const createIfDoesntExist = dest => {
7979
fs.mkdirSync(dest);
8080
}
8181
}
82+
const copySyncIfDoesntExist = (src, dest) => {
83+
if(fs.existsSync(dest)) return;
84+
copySync(src, dest);
85+
};
8286

87+
copySyncIfDoesntExist('./config/main.js', './config/main.local.js');
8388
createIfDoesntExist('./build');
8489
createIfDoesntExist('./build/public');
8590
copySync('./src/favicon.ico', './build/public/favicon.ico', true);

package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"@types/isomorphic-fetch": "0.0.34",
5252
"@types/jest": "^19.2.3",
5353
"@types/node": "^8.0.0",
54+
"@types/raven-js": "^3.10.0",
5455
"@types/react": "^15.0.22",
5556
"@types/react-addons-test-utils": "^0.14.16",
5657
"@types/react-dom": "^15.5.0",
@@ -99,6 +100,8 @@
99100
"es6-promise": "^4.0.5",
100101
"express": "^4.14.0",
101102
"isomorphic-fetch": "^2.2.1",
103+
"raven-for-redux": "^1.0.0",
104+
"raven-js": "^3.16.0",
102105
"react": "^15.5.4",
103106
"react-dom": "^15.5.4",
104107
"react-helmet": "^5.0.2",

src/app/redux/configureStore.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import {History} from "history";
22
const appConfig = require("../../../config/main");
3+
const localConfig = require("../../../config/main.local");
4+
import * as createRavenMiddleware from "raven-for-redux";
5+
import * as Raven from "raven-js";
36
import {routerMiddleware} from "react-router-redux";
47
import {applyMiddleware, compose, createStore} from "redux";
58
import {createLogger} from "redux-logger";
@@ -14,19 +17,25 @@ interface IExtendedStore extends Redux.Store<IStore> {
1417

1518
export function configureStore(history: History, initialState?: IStore): IExtendedStore {
1619

20+
const mergedConfig = {...appConfig, ...localConfig};
1721
const sagaMiddleware = createSagaMiddleware();
1822
const middlewares: Redux.Middleware[] = [
1923
routerMiddleware(history),
2024
sagaMiddleware
2125
];
2226

2327
/** Add Only Dev. Middlewares */
24-
if (appConfig.env !== "production" && process.env.BROWSER) {
28+
if (mergedConfig.env !== "production" && process.env.BROWSER) {
2529
const logger = createLogger();
2630
middlewares.push(logger);
2731
}
2832

29-
const composeEnhancers = (appConfig.env !== "production" &&
33+
if (mergedConfig.sentry && process.env.BROWSER) {
34+
Raven.config(mergedConfig.sentry.dsn).setRelease(mergedConfig.sentry.release).install();
35+
middlewares.unshift(createRavenMiddleware(Raven));
36+
}
37+
38+
const composeEnhancers = (mergedConfig.env !== "production" &&
3039
typeof window === "object" &&
3140
(typeof window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ === "function") &&
3241
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({shouldHotReload: false})) || compose;
@@ -35,7 +44,7 @@ export function configureStore(history: History, initialState?: IStore): IExtend
3544
applyMiddleware(...middlewares)
3645
));
3746

38-
if (appConfig.env === "development" && (module as any).hot) {
47+
if (mergedConfig.env === "development" && (module as any).hot) {
3948
(module as any).hot.accept("./rootReducer", () => {
4049
store.replaceReducer((require("./rootReducer").default));
4150
});

0 commit comments

Comments
 (0)